当前位置: 首页 > news >正文

AcWing 蓝桥杯集训·每日一题2025·密接牛追踪2

密接牛追踪2

农夫约翰有 N 头奶牛排成一排,从左到右依次编号为 1∼N。

不幸的是,有一种传染病正在蔓延。

最开始时,只有一部分奶牛受到感染。

每经过一个晚上,受感染的牛就会将病毒传染给它左右两侧的牛(如果有的话)。

一旦奶牛被感染,它就会一直被感染,无法自愈。

给定一个经过若干个夜晚后的奶牛的整体状态,其中哪些奶牛已经被感染,哪些奶牛尚未被感染统统已知。

请你计算,最开始时就受到感染的奶牛的最小可能数量。

输入格式

第一行包含整数 N。
第二行包含一个长度为 N 的 01序列,用来表示给定的奶牛的整体状态,其中第 i个字符如果是 1 则表示第 i 头奶牛已经被感染,如果是 0 则表示第 i 头奶牛尚未被感染。

输出格式

一个整数,表示最开始时就受到感染的奶牛的最小可能数量。

输入样例

5
11111

输出样例

4

题意 : 给定01字符串, 求最开始时, 01串中含1的数量,每天01串中的1都会扩散扩散方式如下:

  • 每天 1 会向俩端扩展,知道全部 0 变为 1 为止

解题思路:

将扩散转换为区间问题, 查找最大天数, 因为每个1 每天的扩展区间为 2r + 1 其中 r 为天数, 可以用一个变量cnt统计出每段去间1的数量, 然后套用公式计算出最大天数, 根据最大天数, 计算该段 1 的连续区间最少的 1 的数量。

AC Code

// Problem: 密接牛追踪2
// Contest: AcWing
// URL: https://www.acwing.com/problem/content/5441/
// Memory Limit: 64 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include<bits/stdc++.h>
typedef long long ll; // 确保 ll 在使用前被定义
using namespace std;
using i64 = long long;
#define f for(int i = 0; i < n;++i)
#define ff for(int i = 1; i <= n;++i)
#define int long long 
#define pii pair<int,int>
#define In \ll n; \std::cin >> n;\

const int mod = 1e9 + 7, N = 1e7;void solve(){In; std::string s;std::cin >> s;int ans = 0;std::vector<pii> ss;// 遍历每段区间, 将每段区间记录for(int i = 0, j = 0; i < n; i = j) {while(s[i] == '0') i++;j = i;while(j < n and s[j] == '1') j++;if(j > i) ss.push_back({i , j - 1});}if(ss.size() == 0) {std::cout << 0 << "\n";return ;}// 计算最小天数int R = 1e9;for(auto &[l , r] : ss) {// 最后和首位要特判if(l == 0 or r == n - 1) R = std::min(r - l + 1, R);else R = min((r - l + 2) / 2, R);}// 最后根据答案计算最小感染牛for(auto &[l, r] : ss) {ans += (r - l) / (2 * R - 1) + 1;}std::cout << ans << "\n";
}signed main(){std::ios::sync_with_stdio(false);std::cin.tie(0); std::cout.tie(0);ll T = 1;//std::cin >> T;for(int i = 1; i <= T; ++i) solve();
}
http://www.lryc.cn/news/545163.html

相关文章:

  • LeetCode 每日一题 2025/2/24-2025/3/2
  • TeX Live 2025 最新版安装与中文环境配置全教程(Windows/Mac/Linux)
  • Android实现漂亮的波纹动画
  • JAVA学习笔记038——bean的概念和常见注解标注
  • 自然语言处理NLP入门 -- 第十节NLP 实战项目 2: 简单的聊天机器人
  • 【网络安全 | 渗透工具】小程序反编译分析源码 | 图文教程
  • uniapp 系统学习,从入门到实战(六)—— 样式与布局
  • ‘ts-node‘ 不是内部或外部命令,也不是可运行的程序
  • mysql 全方位安装教程
  • 22-接雨水
  • 使用Spring Boot与达梦数据库(DM)进行多数据源配置及MyBatis Plus集成
  • leetcode28 找出字符串第一个匹配值的下标 KMP算法
  • 【Bug】natten:安装报错(临近注意力机制的高效cuda内核实现)
  • AI 实战2 - face -detect
  • Spring Boot 项目开发流程全解析
  • 从Java到MySQL8源码:深入解析PreparedStatement参数绑定与执行机制
  • mysql的主从同步
  • 工程化与框架系列(10)--微前端架构
  • 【3天快速入门WPF】11-附加属性
  • MySQL并发知识(面试高频)
  • 现存脑容知识库
  • Mysql-如何理解事务?
  • dify绑定飞书多维表格
  • QT播放视频保持视频宽高比消除黑边
  • 1. IO的基础知识
  • 科普:ROC AUC与PR AUC
  • Vue3父组件访问子组件方法与属性完全指南
  • AI时代保护自己的隐私
  • Android APK组成编译打包流程详解
  • TCP长连接与短连接