初一生的 CSP 游记
坐标:GD NFLS\ 考场:smzx
11.1
上午
提前到了考场,结果吃的不让带进去,要考试中途跑出去吃,然后在外面猛吃费列罗,接着静静等待开始考试。
解压两层后用 Edge 打开 pdf ,结果 pdf 没有密码,我直接打开看了看 T1 ,直接秒了,然后看了看 T2 ,写了个 sort 然后用数学方法找座位号,秒掉大样例。然后一看 T3 ,卧槽竟然是异或,然后想到可以用前缀异或和记录,写了很久都没写出来,然后去看 T4 ,发现不会然后直接大法师猛拿暴力分,再切回 T3 卡了很久,结果用了一堆奇怪的东西,然后赛后也没写出来。
出来后 zyc 和 说 T4 不是非常简单吗,但是他们不会 T3 , 我惊呆了.
我跟 zyc, xwd, _pzy 他们一起吃饭,吃完饭我就跟他们进考场了。
下午
然后我到石门考场了,结果里边老师没弄好,我等了一会才进入考场。考试开始后,pdf 还是没密码,开始后秒开 T1 ,不会,然后看 T2 ,发现这似乎是最小生成树,然后一看还有村庄,不会,将 k=0 的数据写了个 Kruskal 后,又回到 T1 ,结果发现 T1 很简单,不用考虑每个人的第三个满意度,我之前想的太复杂了,然后将 T1 秒了,再看 T3 ,不会,然后看部分分一眼 hash 。但懒得打了,因为 hash 都几乎忘光了,于是大暴力,样例似乎没过,看了眼 T4 意识到不可能做出来,然后写了 T2 ,脑抽打了个朴素 Prim ,还打错了,然后就飞走了。
11.8
J3挂了5分?
将错误代码贴一下
#include<iostream>
#include<map>
#include<algorithm>
#include<cstring>
using namespace std;
int a[500010],b[500010],n,k,endnow=0,ans;
map<int,int>mp;
int main(){
scanf("%d %d",&n,&k);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
b[i]=(b[i-1]^a[i]);
}
for(int r=1;r<=n;r++){
if(k==0){
if(a[r]!=0){
if(mp.count(b[r])&&mp[b[r]]+1>endnow){
endnow=r;
ans++;
}
}
else{
endnow=r;
ans++;
}
}
else if(k==b[r]){
if(endnow==0){
endnow=r;
ans++;
}
else{
if(mp.count(0)&&mp[0]+1>endnow){
endnow=r;
ans++;
}
}
}
else{
if(mp.count((k^b[r]))&&mp[(k^b[r])]+1>endnow){
endnow=r;
ans++;
}
}
mp[b[r]]=r;
}
printf("%d",ans);
return 0;
}
初始化时没有将mp[0]=0,痛失五分,然后 J4 爆炸了,编译没过,因为我是在最后 3 分钟打的,导致挂分;
S考的出乎意料,有151,但是可恶的预估分数线是152。 啊!!!!
11.15
S分数线出了,152,还差一分S1=.\ 但是我有六级勾。~嘿嘿嘿~