[hihocoder1015]补提交卡
来源:互联网 发布:淘宝怎么卖眼药水 编辑:程序博客网 时间:2024/05/31 00:39
问题简介
具体参照hihocoder官网。
实现思路
最长连续提交天数等价于相邻未提交日期差值的最大值-1,所以原问题是求解去除哪些日期之后可以使得相邻日期的差值最大。
那么消除的日期必定是相邻的日期,否则可以通过改变某个不相邻日期为相邻日期使得差值增大。处理的时候前后加入虚拟日期第0日以及第101日,方便边界的处理。
代码
#include <iostream>using namespace std;int main(){ int T; cin >> T; int n,m,nums[102]; nums[0] = 0; int result; for (int t = 0;t < T;++t){ cin >> n >> m; ++n; for (int i = 1;i < n;++i) cin >> nums[i]; nums[n] = 101; --n; if (m >= n) cout << 100 << endl; else { result = 0; for (int i = 0;i < n-m;++i){ if (result < nums[i+m+1]-nums[i]-1) result = nums[i+m+1]-nums[i]-1; } cout << result << endl; } } return 0;}
后记:错误的思路
想要减少枚举的次数,维护两端索引值,然后从中间包括n个日期到m个日期递减。(后来发现并没有丝毫的进步,都是n-m)
这里的递归默认的“有m个补提交卡去除的日期必定包含在有m+1个补提交卡去除的日期中”是错误的。反例是20 21 90,当m=1去除90,当m=2去除20&21.
发现反例的脚本代码可以参照[hihocoder1039]字符消除
0 0
- [hihocoder1015]补提交卡
- hihcoder:补提交卡
- 1051 补提交卡
- hihoCoder1051 - 补提交卡
- #1051 : 补提交卡
- #1051 : 补提交卡
- #1051 : 补提交卡
- 补提交卡
- 补提交卡
- hihocoder-补提交卡
- #1051 : 补提交卡
- 1051 : 补提交卡
- #1051 补提交卡
- hiho1051 : 补提交卡
- #1051 : 补提交卡
- #1051 : 补提交卡
- hihocoder :补提交卡
- 补提交卡 HihoCoder
- 蓝桥杯 基础练习 龟兔赛跑预测
- postgreSql 判断表不存在而创建表
- 【9407】加法表
- ZCMU—1605
- c# Linq 中为什么非要用var
- [hihocoder1015]补提交卡
- 第14周练习-1 数组大折腾(5)
- 欢迎使用CSDN-markdown编辑器
- Android 关于OOM的解决方案
- 第三十五讲项目4--贪财的富翁
- LoadRunner VuGen脚本增强之逻辑判断增强与事务
- 今天我们有1.25亿独立用户访问,只用了50毫秒——redis中setbit的使用
- itoa , atoi ,sprintf 的用法
- Hibernate—session与transaction