==题解==
题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即可。
题目
题目 |
---|
#1: P1637 昨日重现 |
#2: P1638 岛屿战争 |
#3: P1639 犬界病毒之二 |
#4: P1640 如此简单 |
- 状态
- 已结束
- 规则
- OI
- 题目
- 4
- 开始于
- 2024-07-12 11:30
- 结束于
- 2024-08-23 03:30
- 持续时间
- 1000.0 小时
- 主持人
- 参赛人数
- 26