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

蓝桥杯每日一题——Acwing 5438. 密接牛追踪2

思路:

可将本题转换为一个区间覆盖问题

首先可以将r天感染后的所有1找出,即给出若干个全为1的线段。

假设最开始有一头牛感染,经过r天,这头牛会把左边的r头牛感染右边r头牛也感染,相当于每头初始被感染的牛都可以感染长度为2r+1的区间,将这些区间覆盖最开始的区间得到感染后的情况,即可转换为区间覆盖问题。
 

可知所有的1区间都是不相连的,即初始时所有的段与段之间都是独立的,则就可以分别考虑每一段,对每一段中,每一个初始被感染的牛都可以在此区间内进行区间覆盖

则问最开始时就受到感染的牛的最小可能数等价于:问最少用多少个长度为2r+1的区间可以将其覆盖,当然区间可以重复覆盖,因为一头牛被感染后可以重复感染

由下图公式可知,最少需要的区间数为(假设该区间长度为c)[c/(2r+1)](上取整)

由公式可知(其实想想也知道),天数越多开始被感染的牛越少x越大越好,但是能有多大?

这里为什么要限制天数呢?是因为给出的经过r个夜晚后的感染情况有0有1,如果不限制天数,结果一定都是1,不符合题目的要求

r的多少需要考虑每一段区间对r的限制

有两种情况:

情况1:当考虑该区间c两边都是0的时候,用来覆盖c区间的区间(2r+1)一定不能超过c,因为左右两边都是0,比如如果大于的话左右两边应该都被感染了,但是实际并没有。即有2r+1<=c,r<=[(c-1)/2]下取整

情况2:对于左右边界,当是最左边的牛感染时取得最多感染天数,为c-1,右边同理,即天数r<=c-1
还有一种极端情况即最终所有牛都被感染了,这个时候只需要1头牛,最多经过r-1 天

x需要满足上面每一个不等式需要取交集,即通过min实现

求下取整:除法
求上取整:(a+b-1)/b

代码:

#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>

using namespace std;

const int N=300010;

int n;
char s[N];
vector<int> cnt;//存每段区间的长度
//
int main()
{
	cin>>n;//牛的数量 
	for(int i=0;i<n;i++)//牛的感染情况 
		cin>>s[i]; 
	
	int r=n;//取r(感染天数)的最大值 
	for(int i=0;i<n;i++)
	{
		if(s[i]=='0') continue;//没有被感染
		//表示当前第一头被感染的牛,左边界
		int j=i+1;//用j来枚举右边界
		while(j<n&&s[j]=='1') j++;
		int c=j-i;//小区间长度
		int d=(c-1)/2;//天数,先假设是中间的情况
		//判断是否是左右两侧
		if(!i||j==n)//当i=0是左侧,当j==n右侧 
			d=c-1;
		 r=min(r,d);//r需要满足所有不等式,即取交集
		 cnt.push_back(c);//存入当前区间的长度
		 i=j;//更新i 
	}
	
	int res=0;//一共需要多少小区间 
	for(int c:cnt)
		res+= (c+2*r)/(2*r+1);
	
	cout<<res<<endl;
	return 0; 	
 } 

相关文章:

  • Linux mount和SSD分区
  • JetsonOrin源码安装部署PaddlePaddle
  • 【java】集合的基本使用
  • [Linux][经验总结]Ubuntu6.11.0 docker更换镜像源(实操可用的正确方法)
  • 深入解析前后端分离架构:原理、实践与最佳方案
  • 算法手记5
  • ngx_event_conf_t
  • Qt事件处理(重写event)
  • nginx不在默认的yum仓库的解决方法
  • libstdc++ GLIBCXX_3.4.20 not found 解决方法
  • 计算机毕业设计:基于SSM理发店造型中心网上预约评价系统
  • C11标准对于C语言的内存模型的描述
  • C++ 返回值优化(Return Value Optimization)
  • 学习TensorFlow前的NumPy核心知识点
  • C++学习之二叉树
  • S32K144入门笔记(十五):ADC(转换器部分)的解读
  • windows安装Elasticsearch
  • 科普:为何要对特征进行分箱?
  • C++单例模式精解
  • OSG 和 VTK 在JS仿真中应用的更详细对比分析,包括它们的技术特点、适用场景、优缺点以及如何选择或结合使用
  • 培训教育的网站怎么做/中国网站建设公司前十名
  • 重庆做模块网站/百度app下载官方免费下载最新版
  • 时网站建设公司管理/seo公司资源
  • 在哪个网站上面可以接项目做/seo关键词排名价格
  • 做网站是个什么行业/seo在线诊断工具
  • 如何建立网站销售平台/福州seo排名优化公司