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

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.kler.cn/a/562873.html

相关文章:

  • 正则化技术
  • 【React】合成事件原理
  • 力扣hot100刷题——11~20
  • 计算机主板南桥与北桥核心架构概论
  • 百度AI:起个大早,赶个晚集?
  • ERP项目实施流程及存在的风险
  • (IDE接入DeepSeek)简单了解DeepSeek接入辅助开发与本地部署建议
  • 2025年- G18-Lc92-169. 多数元素-java版
  • 八、Spring Boot:RESTful API 应用
  • SEO炼金术(4)| Next.js SEO 全攻略
  • 组态软件在物联网中的应用
  • 自动驾驶泊车算法详解(一)
  • YOLOv8架构中的SAConv空洞卷积机制:性能优化与未来发展方向
  • 【STM32F103ZET6——库函数】2.按键控制蜂鸣器
  • J-LangChain - RAG - PDF问答
  • ubuntu服务器安装VASP.6.4.3
  • 图像处理之图像边缘检测算法
  • mac 安装Eclipse,汉化及安装ERMaster
  • 计算机工具基础(五)——Vim
  • 学习threejs,Materials常量汇总