CF Round 418爆零记

作者分享了自己在Codeforces比赛中首次遭遇系统测试失败的经历,并详细回顾了各题目的解答过程及失误点,反思了自己在解题速度和严谨性上的不足。

这场CF是我第一次failed system test并爆零,悔不当初,手速太慢。
开场看T1,一眼秒好题,然后我在判新加入的数是否能维持原序列有序时直接if(a[x-1]<b[1] && b[1]<a[x+1])puts("No");
但是当x==n时,由于a[n+1]==0,然后就gg了。
然后开T3,立刻想出 O(nq) 算法,然后把 21051500 给算错成 3107 ,然后想着cf机子那么快,也没注意常数,同房间的更没有人来hack,然后就gg了。
接着开T2,10分钟写完,第6个点WA了,死活想不出来。
之后开T4,想了会,无果。
又去想T2,无果。
还剩25分钟,再看T4,想了个贪心,写完后发现是假的,然后想出了一个树形DP,还剩10分钟,gg。
回去刚T2,最后30秒想出反例,眼看着比赛结束。
看着system test的结果,心都凉了,我终于认清了我的蒟蒻本质,也就底垫垫零爆爆吧。
其实如果是OI赛制,5个题目至少3小时,每一题可以认真思考,造小数据,想反例,观察样例,加上部分分,我应该会好很多,然而这里是CF,分秒必争,不过也幸好是CF赛场上爆零,不是CCF。
以后还是要加强思考速度和思维严谨性,感觉和那些神犇恐怖的思维速度与手速还差得远啊。
upd:T1加了句话,T3常数优化一波,T4改了一句话,就都艹过去了,悔不当初啊。

### Codeforces Round 980 (Div. 2) 比赛信息 Codeforces Round 980 (Div. 2) 是一场面向国际编程爱好者的在线竞赛,吸引了大量来自不同国家的参赛者参与。这场比赛通常包含多个难度级别的题目,旨在测试选手们的算法设计能力和编码技巧。 #### 比赛时间与平台 比赛于特定日期在Codeforces平台上举行,持续时间为两小时。在此期间内,参与者需解决尽可能多的问题来获得高分并争取更好的排名位置[^2]。 ### 题目解析:C - Concatenation of Arrays 对于给定的任务——数组连接问题,目标是从两个长度相等但元素可能不同的整数序列出发,在满足一定条件下构建一个新的组合形式。具体来说: - 输入描述了一个由正整数组成的列表`q[]`以及两个参数`n`和`m`。 - 要求通过某种方式调整这些数值的位置关系使得最终形成的结构能够达到预期效果。 为了实现上述目的,可以采用线性扫描的方法来进行处理而不是复杂的二分查找策略。以下是简化后的解决方案概述及其对应的伪代码表示: 当遍历整个数据集时计算累积值,并判断当前状态下能否形成合法配置;一旦发现符合条件的情况立即更新最优解直至完成全部迭代过程为止。 ```cpp #include <iostream> #include <algorithm> using namespace std; const int N = 1e5 + 7; int q[N]; bool check(int x, int n, int m) { int res = 0; for (int i = 1; i <= x; ++i) { if (i != x) res += q[i]; else res += (n - i + 1) * q[i]; } return res >= m; } void solve() { int n, m; cin >> n >> m; for (int i = 1; i <= n; ++i) cin >> q[i]; sort(q + 1, q + 1 + n); int l = 1, r = n; while (l < r) { int mid = l + r >> 1; if (check(mid, n, m)) r = mid; else l = mid + 1; } cout << l - 1 + m << '\n'; } ``` 此段程序实现了对输入数据的有效分析,并利用简单的逻辑运算得出正确答案。值得注意的是,尽管最初考虑过使用二分法优化性能,但实际上仅需一次完整的顺序访问就能解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值