训练&膜你赛记录
10.27
\(SDOI2016\) 齿轮
本来是一题签到题,用带权\(DSU\),但因为不相信\(double\),用分子分母,复杂化题意出错
\(trick\): \(\log\) 做到化乘为加
10.28
\(collecting\ bugs\)
期望DP模板题
\(Jon\ and\ Orbs\)
题意有亿点混淆,范围没有算出,一开始只枚举到了2000,没有写check所以炸了
\(JXOI2012\) 奇怪的道路
对状态设计不熟练,转移时要先考虑一条边都不连继承过来的情况,在从最近的\(k\)个点里选出\(1\)个与现在的点连边,为了避免重复,这里采用了倒序枚举的方式
中途还因为数组开小了\(WA\),要开到\((1<<(k+1))\)而不只是\((1<<k)\)
\(tips:\) 注意数据范围,需要判断次序计数时,可以用\(01\)背包的思路倒序枚举
\(Football\)
概率裸题,但是要注意这一次的不能与前一次重合。数组开小导致\(RE\) \(2^7=64\) \(QAQ\)
\(聪明的猴子\)
MST裸题,1A
10.29
\(Accumulation\ Degree\)
较基础的换根\(DP\),但由于换根时忘记\(DFS\)错了,还是要注意静态差错能力
\(Computer\)
个人觉得细节比较多,因为复制粘贴,导致最大值和次大值有一段没有更新,\(WA\)了一次,然后需要注意的是如果与最大值相同,可能导致后面决策不同,也要更新
10.30
- \(最小斯坦纳树\)
10.31
打了一场模拟赛,因为中途有些事情,所以\(T3\)出了状况也没想,\(T4\)打表水了\(80\),\(T1\)只会暴力
\(benifits:\)
\(T1\)
考场只打了暴力
形象的理解其实就是从\(n\)中选\(i\)个,从\(m\)中选\(i\)个,及相应从\(m\)中选\(m-i\)个,那么就可以转换为从\(n+m\)中选择\(m\)个了
\(T2\)
还是打了暴力
新套路:将集合的操作转换为时间戳,就可以用差分的思想,动态开点维护区间最大子段和
注意:rt和tot不能同时设为1,必须\(rt=0,tot=0,\)否则就不能够动态开点。
\(T3\)
考场上想到了代价转贡献,但\(f[i][j]\)定义为长度为\(i+j-1\)中第\(j\)条边的方案数从来没有见过,还是要加深理解
\(T4\)
考场想到了打表骗了\(80pts\)。
但\(80pts\)状压的设计没有想到,反而想到了更为复杂的沙雕暴力状压。
正解矩阵树不多见,模型转换不出来,掉线了。
11.1
又打了一场膜你赛
\(T1\)
\(and,xor,or\)的乱搞题目,找规律\(AC\)
\(T2\)
树形DP的经典套路,先处理子树,再换根,注意维护最优解,次优解
之前一直想到当\(son[u]\)不唯一时就赋值为\(0\),其实是没必要的
\(T3\)
用双关键字\(dij\)水过,正解是\(dij\)最短路径树上\(DP\),个人感觉没什么差别
\(T4\)
一点思路都没有。。。
\(centroids\)
比较难的一题树形\(DP\)
- 1.\(\frac{n}{2}\)运用:不合法的子树只可能有一个
- 2.\(son[u]\):这个数组如果有多个相同子树是不用赋值为0的,因为这个时候,\(d[u]\)和\(d1[u]\)都是最大值,没有必要为0
- 3.\(d[u],d1[u]\)这里维护的是子树内的能被替代的最大,次大子树,注意子树内和子树外在这道题里要分开转移,因为如果上面的子树外的\(d\)数组合在一起了,儿子的\(d\)数组就可能不合法了
特殊的地方是,如果这个子树是这个点\(u\)能拿出的最大子树,那么这个\(d[u]\)对于这个子树来说是不合法的,所以我们还要记录一个\(pos[u]\)
小结:对于换根DP还是不大熟悉,思维量没上去,还是要多练,记住分别考虑子树内和父亲转移,如果不能变成一个数组就要拆开
\(farmleft\)
自己的贪心策略是对的,但是最后没有对\(2*(n-1)+c[1]\)取\(\max\),所以只有\(90pts\)
11.2
模拟赛
\(T1\)
OEIS题,不会写,赛后看题解才大概了解推法,注意分类讨论
复习了下矩阵,取模时最好\(+mod\)不然可能会\(溢出\)
\(T3\)
想复杂了,其实每种矩阵都只需要判断\(2*2\)的小矩阵的情况,根据小矩阵还原大矩阵
\(T2\ T4\)
神仙题/fad
\(Out\ of\ hay\)
mst模板
\(The\ unique\ MST\)
考虑权值相同的边可以加几条,实际加了几条,联通效果是一样的,用单调队列可以控制复杂度在\(O(m)\)
最小瓶颈路 加强版
注意数组2倍4倍,另外求\(lca\)其实可以通过记录出来后的时间戳,再用st算法倍增处理出\(l,r\)段内的\(dep\)最小的节点其实就是\(lca\)
11.3
打了一场模拟赛
\(T1\)
\(sb\)错误:1.通过记录下一个不是零的来加速,可是如果第一个就是0,就只会输出0,必须找到第一个不为0的
2.vector没有朴素数组快,实测会T
\(T2\)
考场上想到维护区间,然而没有了优化空间,正解的思路是利用栈的单调性
\(T3\)
只会暴力,看来还是要加强对状态设计的能力
\(T4\)
用贪心包装的数据结构题,暴力都打挂了
总结:今天第一题太粗心,对成绩影响很大,看来不能忽视简单题
11.4
模拟赛
\(T1\)
构造题,找规律本来已经找出来了,结果不知道为什么没有交上去只交了一个暴力??!!!!
其实赛时程序是能过的/fad
\(T2\)
没有想到\(2^i\)的性质,其实就相当于瓶颈生成树
\(T3\)
不知道为啥写倍增挂了,结果居然是数组开小了?!!!
再看
???
是题目出错了?数据到5e5题面只到1e5。。。。。
\(T4\)
简单的状压+二分的题,A了
总结:今天其实正常分数是310,但由于自身原因和题目的问题,没有把握好,第一题这样的低级错误不能在赛场上出现,以后一定要先检查文件是不是最终的版本
训练记录:
牛场围栏
sb错误,数组是\(n^2\)级别的开小了
墨墨的等式
注意到同余最短路取最小的才是最好的,之前不知道为啥记成最大的了
11.5
模拟赛
\(T1\)
折半搜索,手写二分查找快了一倍多(
\(T2\)
找规律题,没有发现差值递增,且序列增长快,所以序列\(\leq 1e9\)其实是很少的,可以暴力枚举,后面的差值只可能是相邻两项,二分即可
\(T3\)
考场上想到了枚举贡献,但是在数字相等时卡住了,差分的思路也有想到,但考后订正时发现细节部分错误了,由于标程看不懂,所以还没写完
\(T4\)
写了暴力,正解分块?!,DS题果然还需要加强
总结:注意观察题目所给的提示,记得 没有思路时要打表找规律;对数据结构题要有耐心;
11.6
奖励关
一道挺简单的期望DP,但是因为多取了一次,所以一直错,看来还是要注意边界和细节
T3 护甲
差分还是没有调出来,二阶差分还是要加强啊。。。
11.14
期中考完的第一场模拟赛,头还有点晕,有些难受。。
T1
没想到是数学题。。考后一推式子就出来了,考时没有想到,花了太多时间
T2
用约数个数公式先入为主了,没有想出交换顺序,
T3
其实是挺简单的一道构造题,但是没有时间打了,赛后补了
T4
没有打好暴力,没了
总结
刚考完,成绩不(fei) 是(chang) 很(bu) 理 想,心态有些崩了,T1这种签到题都没做出来。。还是要合理安排时间
11.16
以后只能隔天来机房,平时多花点时间思考吧,感觉效果可能会更好
\(link\ out\ cendroids\)
想到了一些比较奇怪的思路,之前一直想错思路,后面想到了重心的性质,其实就可以把下面重心随便断一条边,给上面的重心。
\(魔法指纹\)
分块打表,乱搞模板。但是奇奇怪怪地WA了,后来发现自己暴力都写错了。。
打表时没有注意数组下标从0开始,所以WA得很离谱
11.18
这两天一直在想潜入行动,但是还没想出来。。看了一些数学的课件,晚上来机房打了dsu on tree和长链剖分
树上\(k\)级祖先
长链剖分的运用,调了半天结果是\(dfs2\)的时候写了\(dfs2(son[u],u)\ RE\)了
大概思想是,先跳完\(2^{maxw}\),剩下的必然会小于当前链的\(len\)(可以用反证法),那么只要存储向上向下\(len\)的节点就可以了,注意向下的只要存在链上的点就可以了
\(CF1009F\ Dominant\ Indices\)
理解了思路,但是实现不是很懂,抄了一部分std,主要是内存分配那部分。
最后错了一次,是因为getans的时候重复算了一次重儿子
最后在邱老师帮助下理解了分配内存的写法。
11.20
做了几道欧拉函数的板子
潜入行动
DP思路想错了,要用之前的u状态来合并更新状态,之前一直只想用U状态来更新
11.21
打模拟赛,早上思路很混乱,根本没有推到一点性质,rk倒一了
T1
没有大样例,我天真地以为只有1,-1,0然后爆炸了
T2
连暴力都没打出来,只想到了最后一定是用一整行黑的去染色
T3
和上次一样的题目,但还是没想出来
T4
想到了分块。。只打了个挂了的暴力
总结:今天模拟赛在暴力和正解上纠结了很长时间,导致T1,T2这种智慧题一点思路都没有,还是要注意安排时间
\(UVA10299\)
欧拉函数裸题,注意特判\(n=1\)的时候输出\(0\)
11.22
这两天T1正解居然都是暴力。。然后想着位运算多了个\(n\)的复杂度就\(GG\)了,第二题是个推式子题,\(T3\ T4\)都不大懂思路,\(T4\)想出来了大部分,但是由于实现能力太差,没能打出来,只拿了暴力分
T2赛后订正时,把代码写得清爽一点就过了,还是不要压行啊,溢出的不明不白
T3赛后看标程理解了如何实现,看来以后遇到不会的题要往分治的思想靠,可能会优化复杂度,而且写起来比较清晰
T4码农题,看了题解就溜了