CSP-S2024邮寄

· · 生活·游记

Day -14 - 0

学了一些网络流、费用流之类的图论算法,希望有用。(我才不会告诉你我还学习了如何不被老师发现自己在干什么)

每天一场模拟赛,一般只会 T1 正解和 T2、3 的部分分,感觉提高 1= 无望(为什么又一场模拟赛 T1 放道下位紫啊啊啊啊)。

比赛前一天老师去参加运动会了,所以 机房=狙房。。。

Day 1(虽然但是提高组只有 Day 1)

上午敲了 3 个线段树板子,感觉对线段树已经无所畏惧。又打了一遍平衡树、ST 表、最短路等一系列板子(当然最后一个没用上)。

直到进了考场校园才开始紧张,离考试还有 10 分钟的时候竟然还有人在开狙!路上发现了许多可爱的小朋友,大概他们都是未来的金钩爷罢!感谢他们现在可以帮我们拉低分数线 QWQ。

解压压缩包和解密 pdf 的过程都十分顺利,先花了 20 分钟把四道题都读了一遍。T1 一眼贪心?感觉跟去年 T1 一个水平。T2 高中物理题,T3 人类智慧(因为同学一直在预言今年 T3 人类智慧)?T4 没思路。

14:50 左右开始写 T1,容易发现,将 r 数组排序后,先死的一定是不能攻击别人的。先用了 vector,感觉时间复杂度假了,遂使用 set,感觉不好维护,于是最终用了 map 来维护每个人是否攻击过。写写写写写,在 15:10 左右过了所有样例,代码大致长这样:(赛后码的)

#include<bits/stdc++.h>
using namespace std;
int n;
int r[100010];
map<int,int> mp;
int ans;
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>r[i],mp[r[i]]++;
    sort(r+1,r+1+n);
    for(int i=1;i<=n;i++){
        auto t=mp.upper_bound(r[i]);
        if(t==mp.end()) continue;
        mp[t->first]--;
        ans++;
        if(mp[t->first]==0) mp.erase(t->first);
    }
    cout<<n-ans;
    return 0;
}

开 T2,随便口胡了一个公式开始写,用二分来算出每辆车超速的区间,第二问就我的贪心是把区间去重之后把包含了其它区间的区间去掉,然后按照左端点排序,如果当前区间没有被点覆盖就把它右端点选出来。

写写写写写,一发过了前 2 个样例,第三个样例发现忘特判没有车超速的情况,价格特判后过了后 2 个样例,结果第 5 个样例出锅了!

错在第二问上,其中一个数字多了 2 ,还有一个数字多了 1。

人傻了,为什么是多啊,如果是少还可以理解为贪心写挂了。遂开始检查细节,此时是 16:00 左右,所以根本不慌。

修修补补了 20 分钟后,发现还是过不了,这时候开始慌了,考虑到可能是浮点数的精度问题,于是重构了一遍手写二分,结果还是错的一模一样。。

特别慌,盯着我的贪心思考时候漏了一些细节未果,此时是 16:50,于是丢了 T2 去开 T3。

由于一直牵挂着 T2,所以 T3 先打了一个暴力并没有多加思考,又去调了半小时 T2 的贪心,还是锅。

发现离考试结束只剩 1 个小时了,但是我的分数只有 100+[40,100]+20+0=[160,220],整个人都蒙了,发誓要调出 T2,因为怕开 T3 会拿不到分(赛后才知道 T3 是一个简单 dp,我还以为是 ad-hoc 烦死了啊啊啊)。

结果是显然的,我又调了半小时 T2 未果。

将希望寄托于 T4 的暴力上,结果发现 T4 暴力不会打,白白浪费我最后的半个小时,只能输出样例跑路。

希望 CCF 的数据能水一点啊啊啊啊啊。。我真的是服了为什么错的,洛谷讨论区有人跟我用相同的方法过了啊。估计是哪个细节写挂了。

怎么人均 220+ 啊。。。。。。。

期望退竞时间:0 天。

明年再见,我的 csp。