目录:

T1:Social Distancing 1
T2:Social Distancing 2
T3:Cowntact Tracing

正题:

T1:Social Distancing 1

题目描述

一种新型疾病,COWVID-19,开始在全世界的奶牛之间传播。Farmer John 正在采取尽可能多的预防措施来防止他的牛群被感染。
Farmer John 的牛棚是一个狭长的建筑物,有一排共 N 个牛栏(2≤N≤10^5)。有些牛栏里目前有奶牛,有些目前空着。得知“社交距离”的重要性,Farmer John 希望使得 D 尽可能大,其中 D 为最近的两个有奶牛的牛栏的距离。例如,如果牛栏 3 和 8 是最近的有奶牛的牛栏,那么 D=5。
最近两头奶牛新来到 Farmer John 的牛群,他需要决定将她们分配到哪两个之前空着的牛栏。请求出他如何放置这两头新来的奶牛,使得 D 仍然尽可能大。Farmer John 不能移动任何已有的奶牛;他只想要给新来的奶牛分配牛栏。

输入

输入的第一行包含 N。下一行包含一个长为 N 的字符串,由 0 和 1 组成,描述牛棚里的牛栏。0 表示空着的牛栏,1 表示有奶牛的牛栏。字符串中包含至少两个 0,所以有至少有足够的空间安置两头新来的奶牛。

输出

输出 Farmer John 以最优方案在加入两头新来的奶牛后可以达到的最大 D 值(最近的有奶牛的牛栏之间的距离)。

样例输入

14
10001001000010

样例输出

2

分析:

四种情况判断:
1.把2个1放在两个不同的区间
2.把2个1放在同一个区间
3.把2个1分别放在头和尾
4.区间输出

CODE:

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
int n,m,maxn1,maxn2,x,y,maxx=2147483647;
int a[100101],cnt;
char c;
int main()
{freopen("socdist.in","r",stdin);freopen("socdist.out","w",stdout);cin>>n;for(int i=1;i<=n;i++){cin>>c;if(c=='1'){m++,a[m]=i;if(m>1){maxx=min(maxx,a[m]-a[m-1]);if(a[m]-a[m-1]>=maxn1){maxn2=maxn1;maxn1=a[m]-a[m-1];}elsemaxn2=max(maxn2,a[m]-a[m-1]);}}}x=min(maxn1/2,maxn2/2),y=maxn1/3;if(a[1]>1)  //分别判断{x=max(x,min(a[1]-1,maxn1/2));y=max(y,(a[1]-1)/2);}if(a[m]<n){x=max(x,min(n-a[m],maxn1/2));y=max(y,(n-a[m])/2);}if(a[1]>1&&a[m]<n)cnt=min(a[1]-1,n-a[m]);if(m==0)cout<<n-1;elsecout<<min(maxx,max(x,max(y,cnt)));return 0;
}

T2:Social Distancing 2

题目描述

由于高传染性的牛传染病 COWVID-19 的爆发,Farmer John 非常担忧他的奶牛们的健康。
尽管他尽了最大努力使他的 N 头奶牛们(1≤N≤1000)践行“社交距离”,还是有许多奶牛不幸染上了疾病。编号为 1…N 的奶牛们分别位于一条长直道路上的不同位置(相当于一维数轴),奶牛 i 位于位置 xi。Farmer John 知道存在一个半径 R,任何与一头被感染的奶牛距离不超过 R 单位的奶牛也会被感染(然后会传染给与其距离 R 单位内的奶牛,以此类推)。
不幸的是,Farmer John 并不确切知道 R 的值。他只知道他的哪些奶牛被感染了。给定这个数据,求出起初感染疾病的奶牛的最小数量。

输入

输入的第一行包含 N。以下 N 行每行用两个整数 x 和 s 描述一头奶牛,其中 x 为位置(0≤x≤10^6),s 为 0 表示健康的奶牛,1 表示染病的奶牛,并且所有可能因传播而染病的奶牛均已染病。

输出

输出在疾病开始传播之前已经得病的奶牛的最小数量。

样例输入

6
7 1
1 1
15 1
3 1
10 0
6 1

样例输出

3

分析:

这道题在T1的基础上做出了改变……
实际上求出每个被感染的牛与离它最近的一头被感染的牛之间的距离就好了
注意开long long

CODE:

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
long long n,f[1000001],x,y,minn=2147483647,maxx,ans;
int main()
{freopen("socdist2.in","r",stdin);freopen("socdist2.out","w",stdout);scanf("%d",&n);for(int i=1;i<=n;i++){     scanf("%d%d",&x,&y);maxx=max(maxx,x);if(!y) f[x]=1;  //标记else   f[x]=2;}x=1100000,y=2200000;for(int i=1;i<=maxx;i++){minn=min(minn,abs(x-y)-1);  //距离if(f[i]==1) y=i;if(f[i]==2) x=i;  //记录}minn=min(minn,abs(x-y)-1);x=-1;for(int i=1;i<=maxx;i++) if(f[i]==2) {if(i>x) ans++;  //计数x=i+minn;}printf("%d\n",ans);return 0;
}

T3:Cowntact Tracing

题目描述

由于高传染性的牛传染病 COWVID-19 的爆发,Farmer John 非常担忧他的奶牛们(编号为 1…N)的健康。最近,Farmer John 对他的所有奶牛进行了检测,发现有一部分奶牛对该疾病的检测结果呈阳性。利用牛棚内的视频监控,他得以查看最近的奶牛之间的互动行为,结果发现奶牛们互相打招呼时,她们会握蹄,不幸的是这是一种会将疾病从一头奶牛传播给另一头奶牛的行为。Farmer John 汇总了一个添加了时间戳的清单,每条数据的形式为 (t,x,y),表示在时间 t,奶牛 x 与奶牛 y 握了蹄。Farmer John 同时还知道以下信息:
(一)他的农场上恰有一头奶牛最初带有携带疾病(我们将这头奶牛称为“零号病人”)。
(二)一旦一头奶牛被感染,她会在接下来的 K 次握蹄中传染疾病(可能会与同一头奶牛握蹄多次)。握蹄 K 次后,她不再在此后的握蹄中传染疾病(因为此时她意识到了她会传染疾病,于是会仔细地洗蹄)。
(三)一旦一头奶牛被感染,她会持续处于被感染状态。
不幸的是,Farmer John 不知道他的 N 头奶牛中的哪一头是零号病人,也不知道 K 的值!基于他的数据,请帮助他缩小这些未知量的范围。保证至少有一种可能的情况。

输入

输入的第一行包含 N(2≤N≤100)和 T(1≤T≤250)。下一行包含一个长为 N 的字符串,每个字符均为 0 或 1,表述目前 Farmer John 的 N 头奶牛的状态——0 表示一头健康的奶牛,1 表示一头染病的奶牛。以下 T 行每行包含 Farmer John 的互动清单中的一条记录,由三个整数 t、x 和 y组成,其中 t 为一次互动发生的正整数时间(t≤250),x 和 y 为范围 1…N 内的不同整数,表示时间 t 握蹄的两头奶牛。在每一时刻至多只有一次互动发生。

输出

输出一行,包含三个整数 x、y 和 z,其中 x 为可能为零号病人的奶牛数量,y 为与数据一致的最小可能 K 值,z 为与数据一致的最大可能 K 值(如果通过数据无法推断 K 的上界,z 输出 “Infinity”)。注意可能有 K=0。

样例输入

4 3
1100
7 1 2
5 2 3
6 2 4

样例输出

1 1 Infinity

待补档……

2020.4.08 C组模拟赛题解相关推荐

  1. 2020.2.13 C组模拟赛题解

    目录: T1:晾衣绳 T2:罗密欧与朱丽叶的约会 T3:粉刷栅栏 T4:马蹄印 T1:晾衣绳 题目描述 奶牛们用N(1<=N<=1000)根绳子架起了晾衣绳,以便晒它们刚洗完的衣服.用它们 ...

  2. 计蒜客2020蓝桥杯大学A组模拟赛题解

    计蒜客2020蓝桥杯大学A组模拟赛题解 蓝桥杯的话,去年拿了C++组的国二.今年报名了新成立的Python组,不知道能不能摸到国一的鱼 模拟赛链接如下: https://www.jisuanke.co ...

  3. 第一届『Citric杯』NOIP提高组模拟赛 题解

    [官方题解]第一届『Citric杯』NOIP提高组模拟赛 题解 第一题 柠檬超市 这题是本次模拟赛的送分题.做法显然. 但是注意此题有一个陷阱: 注意W和C的规模都是10^9,所以如果直接用doubl ...

  4. 第十一届蓝桥杯2020年C++A组省赛题解

    文章目录 注 考生须知 试题A:门牌制作 代码 试题B:既约分数 代码 试题C:蛇形填数 题解 代码 试题D:七段码 题解 代码 试题E:平面分割 题解 代码 试题F:成绩分析 题解 代码 试题G:回 ...

  5. 2020蓝桥杯C-B组模拟赛—有趣的数字

    我们称一个数是质数,而且数位中出现了 5 的数字是有趣的.例如 5, 59, 457都是有趣的,而 15, 7不是.求 1 到 100000 中有趣的数的个数. #include<stdio.h ...

  6. 计蒜客信息学3月普及组模拟赛

    A. 断幺九 题目链接 分值:100 时间限制:1000ms 测试点数目:10 B. 锈湖 题目链接 分值:100 时间限制:2000ms 测试点数目:10 C. 图  题目链接 分值:100 时间限 ...

  7. 2020.02.07普及C组模拟赛4

    普及C组模拟赛4 **1.权势二进制 ** 题目描述 一个十进制整数被叫做权势二进制,当他的十进制表示的时候只由0或1组成.例如0,1,101,110011都是权势二进制而2,12,900不是. 当给 ...

  8. 2021年 第十二届蓝桥杯第二期校内模拟赛题解(Java版)

    时隔多日,终于会写一些简单DP了哈哈哈! 稍微改版,方便阅读,若有错,请指出 2019年 第十届蓝桥杯省赛题解(JavaB组版) 2020年 第十一届蓝桥杯第一场省赛题解(JavaB组版) 2020年 ...

  9. DD 摆磁铁(计蒜客信息学8月普及组模拟赛)

    DD 摆磁铁 这道题来自 计蒜客信息学8月普及组模拟赛 普及组!! 把我一个TG选手看懵了 看来我要回去打普及了 题目大意 给出一个n个节点的树,要把树上给定的2*m个节点两两配对,两个节点配对的产生 ...

最新文章

  1. make: warning: file “xxx“ has modification time yyy s in the future 解决方法
  2. eclipse format的时候如何让@param后不换行
  3. 微机原理汇编之部分重要知识整合包括:判断解释程序运行(新手有利)并画存储结构,字节变量,寻址方式
  4. 修改putty远程登录控制台的字体
  5. android 剪贴板管理器,安卓剪贴板管理(Clipper Plus)
  6. 小程序返回上一页并传参
  7. c3p0 参数 模糊查询_Hibernate day03笔记
  8. lambda表达式之进化
  9. C#学习常用类(1003)---Timer类(System.Timers.Timer)
  10. 互联网下一个热点:服务业电子商务
  11. 基于adaboost算法的人脸检测_基于噪声检测的图像去噪算法
  12. Xshell和Xftp使用教程
  13. 支付宝支付(cordova-plugin-alipay-v2 ) 报错AL138173
  14. 论文阅读——Efficient and Robust Feature Selection via Joint L2,1-Norms Minimization
  15. 【成功解决】运行qt生成的.exe文件报“无法找到入口”的问题
  16. 四处收集拼接的html学习笔记
  17. 第1章 Cookie模拟登录(1.1 模拟登录的原理)
  18. 智能制造怎么精益生产?详解:精益生产与智能制造的融合
  19. 如何编写智能合约(Smart Contract)?(II)建立加密代币
  20. python语言入门h_python教程,pythonh学习线路图?

热门文章

  1. 2019年的咖啡大战,从杭州开打?
  2. c#实现任务栏气泡提醒
  3. 宁海中考政策计算机考试合格,宁海中考指南!同学们、家长们你们准备好了吗?...
  4. 一言不和就自己写了个编程语言
  5. 微信广告转化统计java,百度推广oCPC微信号复制转化次数统计系统数据接口
  6. java读取Excel2003和Excel2007内容
  7. 权限和归属关系解析与新手小白操作教程
  8. linux 文本方式怎么安装,Linux文本方式安装系统
  9. ⑦Java SE知识点回顾与小结(面向对象)
  10. 区块宝周报:区块链一周大事排行榜10.16