CSP-2025游记
tjy18877175818 · · 生活·游记
Day1上
早上起来7:14再出门,买了根巧克力,一瓶水,一瓶茶,到的时候堵车,下车一路跑过去的,可能有个600米吧,到门口才发现人也不少,就在旁边看了一下除法mod质数p正好T4用上了
看题的时候T1T2已经看笑了,T3看傻了,考了个异或和,我是个偷懒的人,已经不记得了(并没有学过【怒】),赛时也没给定义,人直接炸了,只好拿个特殊性质
T4子集枚举,特殊性质的数论,怒偷64分,然后把茶和巧克力吃完了,检查了好久,没什么事干,给T4的特殊性质造了个对拍,过了一会,就出去了,在校园里看见的死水:
最终100+100+30+64
Day1下
中午j组结束,点了一份午餐,在大学里面呆着到处逛了逛,没回去了,路上偶遇了老师,留下了照片(谁知道为什么llg在这里)
下午开赛前,神秘考场不知道为什么爆了,临时换了一间考场,延时了半小时
看到T1我直接模拟,然后不出意外样例3就挂了,回去读题,第一反应就是dp,然后我傻了,估计了一下时间,打算一个半小时打T1,一个小时拿T2部分分,剩下一小时打T3T4,死磕了一会,发现由于n/2性质,顺着推没推出来,反着看了一下,好像跟最大值和次大值差值有关,误打误撞蒙出了78行的结构体排序贪心(结构体足足有6个无用变量的石山),写完的时候也差不多一个半小时
::::info[赛时代码没这么好看]
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
struct Nova{
int man,woman,chazhi;
int love;
};
int T;
int n,o,fb[4],ans;
Nova t[N];
bool cmp(Nova a,Nova b){
if(a.love==o&&b.love==o)return a.chazhi>b.chazhi;
return a.love==o;
}
void solve(){
cin>>n;
ans=fb[1]=fb[2]=fb[3]=0;
for(int i=1;i<=n;i++){
int a1,a2,a3;
cin>>a1>>a2>>a3;
t[i].man=max({a1,a2,a3});
if(t[i].man==a1){
t[i].love=1;
t[i].woman=max(a2,a3);
}
if(t[i].man==a2){
t[i].love=2;
t[i].woman=max(a1,a3);
}
if(t[i].man==a3){
t[i].love=3;
t[i].woman=max(a1,a2);
}
t[i].chazhi=t[i].man-t[i].woman;
fb[t[i].love]++;
}
if(fb[1]>fb[2]&&fb[1]>fb[3])o=1;
if(fb[2]>fb[1]&&fb[2]>fb[3])o=2;
if(fb[3]>fb[1]&&fb[3]>fb[1])o=3;
sort(t+1,t+1+n,cmp);
for(int i=1;i<=n;i++){
if(t[i].love==o){
if(i<=n/2)ans+=t[i].man;
else ans+=t[i].woman;
}
else ans+=t[i].man;
t[i].man=t[i].woman=t[i].love=t[i].chazhi=0;
}
cout<<ans<<endl;
return ;
}
int main(){
cin>>T;
while(T--){
solve();
}
return 0;
}
::::
到T2第一眼就想到了最小生成树,然后,我忘记priority怎么打了(现在也没记得),试了20多分钟,终于没有编译错误了Q!(提醒大家不要像我一样,平时基础一定要打牢,写出来时有点激动,拍了一下桌子,旁边那人看我的眼神我现在还记得)接下来没有背熟模板,好在记得原理,跟着并查集打了出来
然后T3T4,当时已经晕了(应该买两个巧克力的,上午吃一个,下午吃一个),唯一记得的就是不能放弃,生怕和我去年惨案一样差5分,T3没看懂,呼的一坨,T4拿完了特殊性质,只想出来了所有人都要招聘的情况,才看的T3,发现特别适合大暴力【色】,糊了一托上去,特殊性质死活看不懂,写完了,考试的时候没算分,只记得出去的时候下雨,我头很晕,回到家8点半,吃完饭才感觉好点,好像最后没拿那瓶水
最终100+32+25+4
后记
作为一个初中生,我是幸运的吧,初三的最后一次比赛,考的最理想的一次,考完第二天什么也不想干,去看了场电影,无以言表