联合省选 2026 游记
补完省选 Day1-Day2 T1 我就要 AFO 半年准备中考了,呜呜呜......
Day-4 ~ Day0
我完全没想到在中考之前老师居然允许我停课一周准备省选!!!为啥 CSP-S 和 NOIP 就不让呢?
::::info[训练内容]
Day-4
第一套省选
Day-3
第二套省选
Day-2
VP 了一下 CF 的 Good Bye 2025,
Day-1
VP 了一下 CF 的 Educational CF 187 和 Hello 2026,成绩懒得打了。
Day0
VP 了一下 CF 的 Global Round 30 和 Round 1070,成绩懒得打了。
总结:一点用都没有。 ::::
Day1-Day2
我自己的水平我还是清楚的,能过两道 T1 就不错了,可是,就连这么简单的目标我都做不到,其他人都是每天
Day1
一开始我还非常激动的坐在机房,打算先打
T1 前
然后
lenp 表示以
szp 表示以
就这样我调了很久,一直都是第一个样例对,第二个样例错,不知过了多久,想到了样例二中某些边可以造成贡献,但是成为概率为
lenb 和 szb 分别表示是否有这种情况。
然后又调了很久,直到比赛结束。
出来后发现一堆人做出来了这题,只有我没有做出来,我感到非常的自责。
估分
我又重新调整了状态,在
for(int i = 0; i <= nsz; i++){
for(int j = 0; j <= sz[vv]; j++){
int tmp = (ll)j * qpow(i+j, mod-2) % mod * lenp[vv][j] % mod * szp[u][i] % mod;
lenp[u][j+1] = (lenp[u][j+1] + tmp) % mod;
lenb[u][j+1] |= (lenb[vv][j] && szb[u][i]);
if(lenb[vv][j] && szb[u][i]){
ans = (ans + (ll)sz[vv] * (1-tmp+mod)%mod) % mod;
}
}
}
这里对一条边的每一个贡献都取反了,应该算完所有贡献之后再取反边。
for(int i = 0; i <= nsz; i++){
for(int j = 0; j <= sz[vv]; j++){
if(lenb[vv][j] && szb[u][i]){
int tmp = (ll)j * qpow(i+j, mod-2) % mod * lenp[vv][j] % mod * szp[u][i] % mod;
pall = (pall + tmp) % mod;
}
}
}
ans = (ans + (ll)sz[vv] * (1-pall+mod)%mod) % mod;
for(int i = 0; i <= nsz; i++){
for(int j = 0; j <= sz[vv]; j++){
int tmp = (ll)j * qpow(i+j, mod-2) % mod * lenp[vv][j] % mod * szp[u][i] % mod;
lenp[u][j+1] = (lenp[u][j+1] + tmp) % mod;
lenb[u][j+1] |= (lenb[vv][j] && szb[u][i]);
}
}
改成这样即可通过
后来再看了一下这道题的整体思路,感觉非常简单,但是这么简单的东西我居然总共调了 10h,可见我编写代码水平非常的弱。等中考完我要加训大模拟了。
Day2
经过了 Day1,我已经对 Day2 不报有任何希望了,而且听说 Day1T2 很简单,我就猜 T2 有可能是从 Day2T1 换过来的,看了看 NOIP 难度提升的这么狠,我就觉得这次应该是紫黑黑黑黑黑,但是结果完全出乎我的预料。
解压后直接看 T1,看完题后 1s 想出解法,感觉像是在做梦似的,可能是因为我经常打 CF,这个题瞬间就变得很简单,10min 解决,但是我很少写函数式交互,经常写 IO 交互,所以我不适应这种评测方法,想要测试,但一直出现这个错误:
[Error] ld returned 2 exit status
后来发现是这行代码的问题:
void init(int c, int t);
改成这样就没问题了:
void init(int c, int t){
return;
}
但是我记得这在洛谷上是可以通过编译的。
我也管不了这么多了,大概是 1.5h,我就觉得应该没有任何问题了。这好不容易过一题肯定是要谨慎一点的。
后面 3h 死磕 T2,我记得好像
磕不出来,只好打暴力,暴力也不会,严重怀疑我有痴呆症。只好搞了个随机化上去,前两个点在
T3 自然打暴力数据
估分
总估分: