B - 岁岁年年,共欢同乐,嘉庆与时新!
https://vjudge.net/problem/CodeForces-750A
for循环里,如果当前已用时间+赶路时间 + 5 * i< 总时间,已用时间 + 5 * i;
int tme = 0; for(int i = 1;i <= n;i++){ if(tme + i * 5 + k < m){ tme += i * 5; } else break; }
ce一发,使用time撞关键字了。结合样例分析得不能等于m,
C - 岁岁春无事,相逢总玉颜!
https://vjudge.net/problem/AtCoder-agc001_a
sort排序后遍历数组,res加上偶数项数值即可
sort(a,a+n*2); int res = 0; for(int i = 0;i < n;i++){ if((i & 1) == 0) res += a[i]; }
刚开始使用i & 1 == 0位运算判断偶数失败
因为位运算符优先级小于“==
D - 上天垂光兮熙予以青春,今日何日兮共此良辰!
https://vjudge.net/problem/AtCoder-abc229_d
和之前做过的一道双指针例题类似799. 最长连续不重复子序列 - AcWing题库
左右指针j,i之间'.'的数量超过k时,左指针j右移,每轮循环i,j指针变化完毕后,统计当前‘X'以及’.'数量之和,并与maxn比较, 最后输出maxn即可
// 按了个ctrl z 直接给我干没了一大段内容,还不能复原,莿狗是;
const int N = 1e5 + 10; int cnt[N],now,maxn = 0; for(int i = 0, j = 0;n[i];i++){ cnt[n[i]]++;//hash while(cnt['.'] > k){ cnt[n[j]]--; j++; } now = cnt['X'] + cnt['.']; maxn = maxK(now,maxn); }
用时33min超时13min,没有搞清楚该在哪里获取长度双指针的套路还不熟悉;,多做几次
总结
做的好的地方:
1、使用了计时器来计时,20min一题正合适。
2、解题后注释了一些问题,方便回顾。
做的不好的地方:
1、把自己逼得太紧,休息时间不合理,
2、只有六小时的睡眠时间完全不够,做了5道题就精力耗尽做不下去了
3、还有道二分题(此处未写出),做了半小时才发现思路不对,草稿上列出的数据有误,导致时间大量浪费
反思:
1、保持20min一题的节奏,简单题追求更短时长
2、遇到问题是注释下来,方便回顾
3、注意睡眠时间,至少要6 + 1.5h(午睡)
4、尝试每解三题休息5min
5、问题四,暂时未想到解决方法