题外话

为什么不更ZJOI day1的游记呢。。。。

因为考挂自闭了不想更。等day2考完再说咕咕咕

还是更个SHOI旅游记吧!反正不是自家省选,玩得真开心~~~

 

day0

SH好热好热啊,感觉到夏天了

 

day1

考场是一个奇怪的科技中心什么的,早上很早去本来以为要试机,后来发现考场都进不去。

进去了竟然说随便坐。。。我原来那个位置键盘贼难受,后来换了一个鼠标很诡异的位置,不过键盘还挺好用的。

SH还是发了面包,比ZJ优秀(???)午饭感觉也还不错的说

 

暴力60+40+?

T1是送的,T2是个后缀树模板,T3是个没意思的找规律。

T1其实不用“超级钢琴”也能做,二分出第k大的值顺便暴力枚举>k的求异或和。至于多log的话,把二分改成逐位确定就可以省掉那个log。在下代码力弱得没调出来,结果60分排序比较器写成了greater<int>(),于是就爆零了,哭(赛后loj快榜上目前还是rk1  upd:好吧xj大佬们切掉这题以后我瞬间被打爆了。。);我一开始题还读错了,读成了不相交区间,据说有人按照这个写拿了60。。。

T2大概认真学习过后缀树相关肯定能做出来,大概用到了后缀树上倍增定位+拆点建图。我大概没有学好后缀树,暴力又写挂了。

T3考脑洞和打表功底(出题人被喷了)。我玩了25,类型2根本看不出来,赛后恍然大悟QAQ

得分0+10+25,垫底了

 

讲课期间:

zjc: 我T2第三个大样例没过,拿了50分;刚刚有人说他三个样例都过了,他几分啊?我看看。。。(翻榜)诶他怎么0分啊

 

day2

暴力70+60+?

T1是dp,70是暴力dp加k=0的部分分,k=0是两部分分开dp(互相独立)。正解大概就是再优化一下,有限制的情况暴力跑,无限制的用k=0的方法跑。听说km^2会被卡常。

T2是贪心,感觉也是送的?大家好像都会做(只有我拿不到送的分)。链的部分分是个简单贪心,提示正解,正解就是套用链的做法把子树合并起来即可。

T3融合了很多知识点,包括树上连通块边数-点数=1算贡献,树形dp,长链剖分,数据结构等等,现在还没有搞太懂,据说其中一份std写了908行。反正十分毒瘤就是了。我写了大暴力加L=n,k=1的部分分得了20。

得分70+60+20,其实T3估分是24。。。不过挂4分也不想管他了。

upd: 丢失4分原因竟是数组开小。。。。。哭了。

 

讲课期间:

讲课人:我也是刚刚拿到ppt……(陷入僵局)

(过了一会儿)

讲课人:我们请AC的选手上来讲一下吧!

(过了一会儿,讲T3)

讲课人:我们请最高分选手上来讲一下吧!

(然后放了几页ppt,莫名其妙就结束了讲课)

 

总结

这个分数尤其day1的得分,总觉得是不太符合自己水平的分数。

虽然一次次考试结果证明自己真的很弱,根本跟不上大家的脚步,每次考试都是那种,总想要飞上天反而摔得粉身碎骨的感觉,正解不会写暴力还统统写挂。

不过自我安慰一下这次就是来玩玩的,反正考挂也没有什么影响,还是非常开心地浪了两天半~~~ QAQ

可惜的是noip实在太烂了连去北京浪的机会都没有,thupc感觉也审不过的吧。

noip。。。真的是一时疏忽,如今算是尝到恶果了。感觉真的只能滚去准备学考了啊。ZJOI二试,可能也要变成旅游了。

 

等明年吧。不甘心。

 

upd:放一下我AC的代码

 1 #include<bits/stdc++.h>
 2 #define rep(i,x,y) for (int i=(x);i<=(y);i++)
 3 #define ll long long
 4 
 5 using namespace std;
 6 
 7 const int N=5e5+100;
 8 int n,m,c[N*32][2],w[N*32],leaf[N*32],p[N],tot=1; ll a[N],sum[N],num[N],ans;
 9 
10 void ins(ll x){
11     int now=1;
12     for (int i=31;~i;i--){
13         int b=x>>i&1;
14         if (!c[now][b]) c[now][b]=++tot;
15         now=c[now][b],w[now]++;
16     }
17     leaf[now]++;
18 }
19 
20 void dfs(int u,int i,ll x,ll y){
21     if (!u||i<0||!w[u]) return;
22     if (leaf[u]) ans+=leaf[u]*(x^y);
23     dfs(c[u][0],i-1,x,y);
24     dfs(c[u][1],i-1,x|(1<<i-1),y);
25 }
26 
27 int main(){
28     scanf("%d%d",&n,&m);
29     rep (i,1,n) scanf("%lld",&a[i]),sum[i]=sum[i-1]^a[i];
30     rep (i,0,n) ins(sum[i]),p[i]=1;
31     m*=2; ll res=0;
32     for (int i=31;~i;i--){
33         ll s=0;
34         rep (j,0,n){
35             ll b=sum[j]>>i&1; s+=w[c[p[j]][b^1]];
36         }
37         if (s<m){
38             m-=s;
39             rep (j,0,n){
40                 ll b=sum[j]>>i&1;
41                 dfs(c[p[j]][b^1],i,num[j]|((b^1)<<i),sum[j]);
42                 p[j]=c[p[j]][b],num[j]|=b<<i;
43             }
44         } else{
45             res|=1ll<<i;
46             rep (j,0,n){
47                 ll b=sum[j]>>i&1; p[j]=c[p[j]][b^1],num[j]|=(b^1)<<i;
48             }
49         }
50     }
51     ans+=(ll)m*res;
52     printf("%lld\n",ans>>1);
53     return 0;
54 }
day1 T1 异或粽子

相关文章:

  • 2022-12-23
  • 2021-12-01
  • 2021-12-06
  • 2022-01-09
  • 2021-04-09
  • 2021-07-19
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-06-18
  • 2021-06-20
  • 2022-12-23
  • 2022-12-23
  • 2021-10-10
  • 2021-10-12
  • 2021-09-03
相关资源
相似解决方案