2024714欢乐赛
取代_大佬出的gks,为了凑数膜拜,来写一下比赛记录。
BEGIN
机房网跟答辩一样,刷新网页用了整整48s,然后看题。
T1
很好啊,第一次遇到函数交互题目,这道题是让你走迷宫,每次返回当前的方向。
之前没有遇到过类似的题目,就随便写了一波,拿到 \(\color{orange}20pts\)。
令我万万没想到啊,电脑TMD突然死机了,于是我花了9min去找到一台新的电脑开机+安装edge+写缺省源。
然后回来以后写了个记忆化,多调整了几次,就过了。
赛后听说这道题有bug,原本是不能用记忆化的,正解是走迷宫的右手定则(好像第一次听说),在这里贴一下。
int walk (int d, int t){
int now = (d == -1 ? 3 : d);
now = (now + 3) % 4;
for (int i = 1; i <= 4; i++) {
if (t & (1 << now)) return now;
now = (now + 1) % 4;
}
}
T2
本场比赛最水的题目了,简单树上概率期望换根DP,先写一发 \(\color{#FFF116}60pts\) 暴力,然后加上换根过掉。
void dfs2(int u,int fa)
{
int now=0;
for(auto y : G[u])
{
if(y==fa)continue;
now=(now+dp[y]*t%mod)%mod;
int a=inv(inv(dp[y]))%mod*3%mod;
dp[y]=(dp[u]*t%mod+a%mod)%mod;
dfs2(y,u);
}
}
T3
最无语的一道题,取代_和法国蟑螂赛前没有商量好导致出了一道作业原(汗。
题意是让你把一个序列每次选择两个相邻的元素并把它们都替换为较大的那个元素,问方案总数。
设 \(dp_i\) 表示到前 \(i\) 个元素的方案数,那么对于每一个元素,它能产生影响的只能是以它为中心,向左和向右的单调不上升的子段。然后对于每一个 \(i\),找到它所对的段,累加答案即可。
while(l>1&&a[l-1]<a[i])l--;
while(r<n&&a[r+1]<a[i])r++;
for(int j=l;j<=r;j++)
{
dp[j]=(dp[j]+dp[j-1])%mod;
}
T4
Man!What can I say?Mamba out.
人类!什么罐头我说?曼巴外面。
无向图 \(k\) 染色计数。正解是广义串并联图,但是上课没听讲老师没讲,所以只写出来了 \(\color{#FFA726}20pts\) 的暴力分。
代码就不放了。
T5
丁真称王后不忘初心,牢记使命,回赠给理塘县人民每人一个悦刻五代,从此理塘烟雾缭绕……
可以写 \(\color{red}1pts\) 的区间DP,但显然我没写(逃,加上离线优化可以跑到 \(15pts\),隔壁DALAO写了个线段树成功搞到 \(16pts\)。
正解没怎么听懂,反正是防AK题。
总结
请求更换机房电脑@boat_du。