CSP2024 游记
Day ?
打初赛,感觉谜之简单。
打完看了一下 DX 和兔队的答案,
有惊无险。
Day -1
打最后一场模拟赛,【CSP-S】模拟赛,但是 T1 的标答是莫比乌斯容斥,T4 是抽搐 DP,怎么会是呢?RP 掉光了。
当天上午
敲了一会儿电子木鱼,把音效换成了 Ciallo~(∠・ω< )⌒★,心情好起来了。
打了一下昨年的结构体,感觉很简单,一下子就写完了。随手调了两下就过了,但昨年感觉完全不可做,还是太菜了。
#include<bits/stdc++.h>
#define int long long
#define mk make_pair
#define sec second
#define endl '\n'
#define fi first
using namespace std;
typedef pair<string,int> psi;
typedef pair<int,int> pii;
const int N=110;
inline int getval(int x,int y){return x?((x-1)/y+1)*y:0;}
struct node{map<string,int> pre;vector < string > v;int lim,siz;}d[N];
map<string,int> p;map<string,pii> element;
int now,cnt,tot,n;string s,t,c[N];
void predo(){
tot=4;
d[1].lim=1;d[1].siz=1;p["byte"]=1;
d[2].lim=2;d[2].siz=2;p["short"]=2;
d[3].lim=4;d[3].siz=4;p["int"]=3;
d[4].lim=8;d[4].siz=8;p["long"]=4;
}
inline void init(node &c,int k){
for(int i=1;i<=k;++i){
cin>>s>>t;
int id=c.pre[t]=p[s];
c.v.emplace_back(t);
c.lim=max(c.lim,d[id].lim);
c.siz=getval(c.siz,d[id].lim)+d[id].siz;
}
c.siz=getval(c.siz,c.lim);
cout<<c.siz<<' '<<c.lim<<endl;
}
inline void der(){
cin>>s>>t;
int id=p[s];c[++cnt]=t;
cout<<(now=getval(now,d[id].lim))<<endl;
element[t]=mk(id,now);now+=d[id].siz;
}
inline void ask(){
cin>>s;t.clear();s+='.';
int st=0,id=0,las=0;
for(int i=0;i<s.size();++i){
if(s[i]=='.'){
st=element[t].sec;
id=element[t].fi;
las=i;t.clear();break;
}else t+=s[i];
}
for(int i=las+1;i<s.size();++i){
if(s[i]=='.'){
for(auto j:d[id].v){
int tmp=d[id].pre[j];
if(j==t){
st=getval(st,d[tmp].lim);
id=tmp;break;
}else st=getval(st,d[tmp].lim)+d[tmp].siz;
}
t.clear();
}else t+=s[i];
}
cout<<st<<endl;
}
void dfs(int id,int k,int now){
if(id<=4) return ;
s+='.';
for(auto i:d[id].v){
int tmp=d[id].pre[i];
now=getval(now,d[tmp].lim);
if(now>k){s.clear();s="ERR";return ;}
if(now+d[tmp].siz>k){s+=i;dfs(tmp,k,now);return ;}
now+=d[tmp].siz;
}
s="ERR";
}
inline void query(){
int k=0,id=0,QAQ=0;cin>>k;s.clear();
if(k>=now){cout<<"ERR\n";return ;}
for(int i=1;i<=cnt;++i){
pii tmp=element[c[i]];
if(k<tmp.sec){cout<<"ERR\n";return ;}
if(k<tmp.sec+d[tmp.fi].siz){
id=tmp.fi;QAQ=tmp.sec;
s=c[i];break;
}
}
dfs(id,k,QAQ);
cout<<s<<endl;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
predo();cin>>n;
for(int i=1,op,x;i<=n;++i){
cin>>op;
if(op==1){cin>>s>>x;++tot;p[s]=tot;init(d[tot],x);}
else if(op==2) der();
else if(op==3) ask();
else query();
}
return 0;
}
中午听着歌睡着了,迷迷糊糊的,感觉要炸。
下午
发现没带准考证,还好教练有多余的,又掉 RP 了,debuff 叠满。
进去打了一下快读快写,封装了 cin cout。
但是过程中 IDE 动不动就卡死,对实力影响很大,生气 (╯▔皿▔)╯。
14:40 写调交 T1,中途假了一次,蔡司了。
15:20 写调交 T2,并看了一下 T3,感觉都很简单,不过 T2 写了折磨久,实力果然下降了。
16:20 写调交 T3,并看了一下 T4,还不是自己不够努力。花了 1h 才写出来,中途还假了,呜呜。
不过为什么前三题这么萌啊?我在打普及组吗?
挂分就 ? 了,上个拍。
16:45 T3 上拍。
然后发现 T4 看上去很麻烦,正好也有些饿了,就吃饭。但是只带了干面包,没带水,完全吃不下去,心态有些受影响。
这时旁边的小朋友吧唧吧唧地吃地很香,气死了,睡觉回一下血。
没睡着,但是睡出罪恶感了,于是打了一下性质 A ,继续睡。
估分