首页 > 其他分享 >代码源CSP-S模拟赛Day7-9赛后总结

代码源CSP-S模拟赛Day7-9赛后总结

时间:2024-10-04 22:22:18浏览次数:1  
标签:暴力 Day7 T4 T2 T3 T1 dp CSP 赛后

代码源CSP-S模拟赛Day7-9赛后总结

Day7

赛时

先扫一遍题,T1 显然数位 dp,感觉放在T1应该不难,而且题面有一种很亲切的感觉,感觉很可做。T2 简单思考一下发现最终合成的数就是 \(a_1\),\(a_2\),\(a_3\)……,\(a_n\) 这 n 个数填正负号再加上一个 k 的倍数,估计会有一些比较智慧的手法,感觉很有趣。T3就是简单思考了一下自环和重边的处理,然后就去看 T4了。T4 领域查询好像之前jsy模拟赛里出了一道,题目很像,那道题好像用了树剖。这道题貌似是进阶,但前几档大众分有线段树,以及还有一档或两档不是那么大众分的好像能预处理然后在线搞,给我一种跃跃欲试的感觉,于是计划给这道题留的时间比较多。

T1 一眼数位dp,首先 n 个数或起来的值等于和显然各个位置上有且只有一个数是 1。于是就先码了一个 55 分的 dp,\(f_{i,mask}\) 表示前 i 个数或为 j 的方案数。正解不怎么会了,原因是忘了数位 dp 的状态设置是什么了,我好像记得没有开过数位 dp 的专题

T2 想到给这些数添加正负号之后 15分暴力分就直接出来了。但我没有想到怎么确定最后的正负号到底怎样才最优。感觉合法的方案数肯定不唯一,想到了 \(n^3\) 的dp可以处理出来所有合法方案,但数据范围没有给这一档部分分,感觉可以再想想不想耽误太多时间决定不码暴力直接跳,等会回过来再想,于是就先跳了。

T3简单想一下,发现只会暴力,但看时间发现已经十点多了,我还计划着给T4多留时间呢,暴力都没码就撤了。

T4码dfs序和线段树的时候由于函数与Sub1的函数重名,害我de了十几分钟。然后想了一下不大众的挡,之前感觉能拿40 ,发现有一个超了,但也还多了十分。\(O(10n)\) 的预处理,迅速开码,然后是痛苦的debug,大概在11点20多的时候交上去发现 TLE ,我本地测了一下,答案是对的,但跑了8s,想了一下,菊花图可以把它卡掉,GG。此时距离比赛结束不到40分钟。

T2,T3暴力都没码,我速速的30分钟码了2道题的暴力,此时11:57。沾沾自喜,以为稳了,这时我迅速提交T2,发现edge炸了……慌乱之下问了雪月花果断切谷歌,结果提交T2的时候由于太急多点了几下,直接给我提示15s后再提交,此时北京时间11:59分,省去中间焦急的等待过程,最后一分钟极限交上两道题,并且成功选择了C语言(由于之前没有用谷歌登过代码源),于是两题爆蛋。

最后40分钟心态爆炸了,犯了许多很糖的错误,如果我稳一点,至少BC的暴力分能拿。以及以后不要再像当时一样T2T3暴力都不码,直接去做数据结构了。

赛后

T1 大概是一个很典的数位dp,如果你状态设置对的话,A 掉还是比较容易的,并且正解的状态也是很经典的状态设置,\(f_{i,mask}\) 表示从高到底前 i 个 1 分配,mask 表示哪些位置被“卡满”了的方案数。转移是显然的。我们只需枚举每个数,如果它被卡满了,且 \(r_i\) 的这一位是 0 ,那么 1 就不能给这一位,否则就可以给,正常的转移即可。

T2 想到 \(n^3\) 可以处理所有方案了,但没有想到竟然还有神秘规律,打表!!!!

T3 是在生成树上大胆贪心,基本懂了,T4 是跑 bfs 序,存下每个点第 i 层的区间解决邻域的修改查询,子树修改查询怎么处理呢?感觉不是很会啊。

T1 T2 已订,T3 T4 待订。

Day8

赛时

T1 读完题后忘记了数据范围,以为 n 是一个 2e5 级别的,于是以为这是什么神秘贪心,神秘性质题,在草稿纸上手玩了30分钟式子,有了一个初步的dp想法,但是复杂度很高,于是码了个暴力就撤退了。

T2 首先随便搞了一个较复杂的 n^3 做法,枚举 i,枚举 k,再枚举 \(a_j\) ,预处理各个颜色的前缀和,把i到k之间的\(a_j\)个数乘上\(k\)后面的个数即可。简单调了个十分钟,随后考虑下一个 \(n^2\) 的档。我们在纸上画画图发现可以直接枚举 k 和 \(a_j\) ,然后预处理k前与k颜色相同的位置中间的k的个数以及有多少个i覆盖到它,做一个类似带权前缀和的东西,再做一个定义类似的后缀和。预处理是 \(n^2\) 的,统计答案也是 \(n^2\) 的。但是这个思路很使,细节很多,对着那么多式子硬调到9:30,就交了个 \(n^3\) 上去,撤退了。

T3 一看数据范围,以为是什么神奇且逆天的贪心,再加之这时 whrdalao以及 xueyuehuadalao貌似(好像)都过了 T1,于是迅速跳了 T4 ,码了个暴力,回头看T1了。

觉得T1 没准诈骗,回头看了眼,好家伙,n<=100……,于是开始考虑了一下 dp 的细节。首先这个dp我们得从后往前d,原因是你从前往后d是有后效性 的,你不知道你后面到底打多少次,无法统计贡献,所以 初步设置状态是 $f_{i,j}表示考虑从 n 到 i ,你总共加了 j 的伤害的最大总伤害。发现对于 2 操作是无法转移的。纸上手玩一下发现这玩意儿转移还需要一个攻击回合下标和,于是状态就是这三个东西,差不多是 1e8 级别的,转移显然。A的时候差不多比赛也接近了尾声。最后20分钟都在调T2 ,不出意外 \(n^2\) 没有调出来,不过值得庆幸的是第一遍码的时候没有注意到取模,第二遍加上了,有惊无险没有挂分。

赛后

T2 首先题解 \(n^2\)的做法简洁明了。直接枚举 j 和 k ,然后前缀和统计一下前面的 \(a_k\) 数和后面的 $a_j $ 数,乘起来。正解好像是个根号分治 ,出现次数大于 B 的……完了完了,忘了。
T3 竟然就分讨+模拟,赛时尊嘟被吓到了。
T4 不是很懂,而且讲得时候还有什么and卷积什么的,畏惧了。
T1 T3 已A,T2 T4待订。

Day9

赛时

T1首先想到了最终的糖果数一定是一个定值,为所有糖果 & 起来的值。然后直接就用这个东西码了个你\(n^3\) 区间dp,发现同机房dalao们基本都过了,很慌,并且此时时间已经是开赛快一个小时了,所以就跳T2了。

T2好像做过原,也忘了什么时候的事了,由于1个小时还没有 AT1,心态有点炸,当时不敢细想T2 ,知道T2 码量大,直接考虑暴力了,但是考虑我想了个暴力写完调完发现T了,仔细思考后发现我对于多个乘法用了乘法分配率,将n个数分别与3相乘再乘一块变成了n个数乘一块然后乘3……,暴力码炸了心态更崩了。

当时想稳住心态,决定无论怎样T1 必须A,不然后面的题肯定做不好。果断回去。仔细思考了一下,我们可以把原序列分成若干段,这几个段满足段内异或和为整个序列的异或和,发现最优的情况下就是每个段的长度减一再相加。接下来是怎么划分的问题,不妨假设只要当前异或和正确了,就开新的一段,这样做一定是优的,因为你考虑我把后面的那个数划给这一段的话除非后面的所有数都构不成一个正确的异或和,否则的话我这个数往哪个段上合并均可。如果后面的数都合不成正确的异或和的话他们所有的数肯定都要往这个段合并,我们直接特判掉就行了。于是做完了。

T3 一开始理解错题意了,我还疑惑你直接给 n 不就行了,给我序列干啥。大力推到了一波式子,用组合数公式胡搞了几分钟,发现可以 O(n)求,我心想,就这么简单???于是果断开码,然后直接过样例了,交上去后面的都Wa 了。感觉式子很对,但不知道为啥,打表输出了发现程序完美的执行了我的思路,此时剩30分钟,T3T4暴力没码,于是跳 T4 码了暴力回来,在最后15分钟的时候读懂题意了,速速码了个若只暴力,然后又想了个25分的,速速码了一下,成功在比赛结束后第 0.0001s 完成。

这场打炸了,签到做太久,而且T3理解错题意了,直接把dp题整成数学题了,前面太急了,后面太糖了

赛后

T2 是贪心,\(\frac{n^3}{w}\)判掉无解。接下来考虑最坏情况每行每列都操作,由于保证有解,我每行找到最多有多少列是互相相等的这些列我横着涂,其他的我竖着涂。再在列上也搞一遍就行了。
T3 是简单dp,没啥好说的,都怪我太糖了。
T4 是图论好题,离线的部分听懂了,在线的k=1听懂了,k>1的倍增没搞清楚,待订,T1T2T3都订了。
感觉这场的问题就是心态和时间分配,其实T3比T1简单,但我没时间做了。

标签:暴力,Day7,T4,T2,T3,T1,dp,CSP,赛后
From: https://www.cnblogs.com/yxans/p/18447111

相关文章

  • CSP-S 模拟赛34
    CSP-S模拟赛34T1考虑对原序列将\(k\)的左右分成两个序列。simple的想法是分别从\(1\)开始跑前缀和,每一次总跑到下一个小于它的点,然后依次类推。发现这样做碰到序列最小值之后难以继续。然而我们发现这样跑点的过程从前往后和从后往前是等价的。这样考虑的原因是发现这样......
  • CSP-S 模拟赛 32
    CSP-S模拟赛32rnk25,\(0+0+9+0=9\)。T1[CF1578K]KingdomofIslands还没改出来。T2[CF1578L]Labyrinth警钟嚼烂:改代码改干净。首先考虑如果从\(a\)走到\(b\),人最胖是多少。毫无疑问,这是一个最大生成树问题。在这个基础上考虑原问题,我们发现由于人会越来越胖,一定有边......
  • CSP-S模拟赛20241004
    A你考虑可以把这个数组当中的每个数表示成另一种形式:\(a_i=k_i\timesx+b\)(其中\(x\)是模数,\(b\)为余数)。对于求两个数是否对于某个余数同余,显然你要判断他们两个的差,即\(a_i-a_j\),那么我们用上面那种形式表示其实就是\(a_i-a_j=(k_i-k_j)\timesx\),所以你要判断整个数......
  • CSP-JS多省分数线分析!复赛如何准备?(附复赛流程视频)
    截止目前已经有多个省份CSP-JS的分数线已经出了,很多省份比去年提升了不少,像河南等地都提升了20多分,不过也有一些省份,天津比去年提升分数却不是很多。还有很多省份分数线没出,各位家长想要预估是否能够晋级的,以下是已出分数线省份表格统计:目前已出分数线省份省份入门组......
  • [CSP-J 2023] 小苹果(apple)-----------用数组
    1#include<iostream>2usingnamespacestd;3intmain(){4intn,m;5cin>>n>>m;6intg=n,t=0,li,s[n+1],b;7for(inti=1;i<=n;i++){8s[i]=i;9}10while(g){11t+=1,b=0,li=0,g-=(g+......
  • CSP小苹果详细解法
    #include<bits/stdc++.h>usingnamespacestd;intmain(){intn,ant=0,t,j;cin>>n;cout<<"小苞的桌上一共放了"<<n<<"个苹果。"<<endl;inta[n+5],b[n+5];for(inti=1;i<=n;i++){a[i......
  • 信息学奥赛复赛复习11-CSP-J2020-04方格取数-动态规划、斐波那契数列、最优子结构、重
    PDF文档公众号回复关键字:202410041P7074[CSP-J2020]方格取数[题目描述]设有n×m的方格图,每个方格中都有一个整数。现有一只小熊,想从图的左上角走到右下角,每一步只能向上、向下或向右走一格,并且不能重复经过已经走过的方格,也不能走出边界。小熊会取走所有经过的方格中......
  • 冲刺CSP联训模拟2
    冲刺CSP联训模拟2过T2了,赢了T3T4暴力没写满,输了A挤压我是唐诗老哥一个半小时才过T1发现要求的是\(E(s^2)\),因为有个异或,所以直接考虑拆贡献到每一位\[E(s^2)=E(\sums_i\sums_j)=\sumE(s_is_j)\]所以直接考虑后面那个咋做,就是\(i,j\)位同时是一的时候贡献\(2^......
  • 10.2 代码源 2024 CSP-S 模拟赛 Day 7
    省流:\(55+5+0+10=70\)简称:唐诗T1第一眼发现在二进制下加法不能进位,然后码了个DP就放那了……DP代码:intS=(1<<14)|1;fd(i,0,r[1])f[1][i]=1;fd(i,2,n){fd(j,0,S){f[i][j]=f[i-1][j];for(ints=j;s;s=(s-1)&j){(f......
  • [题解]P7077 [CSP-S2020] 函数调用
    P7077[CSP-S2020]函数调用题意简述给定一个长度为\(n\)的序列\(a_1,a_2,\dots,a_n\),给定\(m\)个函数,每个函数可能是下面\(3\)种类型,用\(T_x\)表示函数\(x\)的类型:\(T_x=1\),对下标\(p\)增加\(v\)。\(T_x=2\),对所有元素乘\(v\)。\(T_x=3\),由若干类型\(1\)和类型\(2\)组成......