定时练习(四)订正

==题解==

题1、昨日重现

 模拟算法:

  算出从日期A到日期B经过的天数cnt,于是:当A<B时,输出(x+cnt)%7,否则输出(x-cnt

%7+7)%7。

  设计函数JS(A,B)来计算cnt,假设A<B的情况,分三部分来计算:

   第一部分:算出日期A是这一年的第几天,设是s;
   第二部分:在计算从第A.y年到B.y-1年的总天数t;
   第三部分:在计算日期B是本年的第几天,设为u。

  于是cnt=t+u-s。

题2、岛屿战争

 贪心算法:

  整理数据:读入发生战争的两个岛屿a,b是,都保证a<b。然后按a由小到大排序。

  贪心策略:找到包含于尽量多的战争的公共桥去删除。

  实现过程:

  从排序后的第一场战争开始扫描,到扫描第i场战争时,出现了a[i]>=min{b[1],..,b[i-1]},

说明第i场战争与前面i-1场战争没有公共的桥了,所此时要删除前i-1场战争的一条公共桥;

  然后从i开始继续向后扫描,又会再次遇到没有公共桥的战争,假设为k,于是在i~k-1场战争

又要删除一条公共桥,

  ……

  直到结束。

  时间复杂度:O(n)

题3、犬界病毒之二

 枚举算法:

  枚举a(1~n)和k(0~m+1):即假设a零号病狗,且 假设前k次接触会传染,然后验证a,k是否

合适。

  设定函数check(a,k)来验证a,k是否合适:

  按时间顺序扫描每次舔嘴信息(x,y),当x是病狗且染病后的舔嘴次数不超过k,那么他肯定

能传给y,对于y做同样的处理。当把所有的信息处理完后,在看记录的病狗信息是否与初始一致。

  时间复杂度O(n^2*m)

题4、如此简单

 知识点:进制转换

  把K转换为二进制,输出时把二进制的1输出成2即可。

状态
已结束
规则
OI
题目
4
开始于
2024-07-12 11:30
结束于
2024-08-23 03:30
持续时间
1000.0 小时
主持人
参赛人数
26