训练&膜你赛记录

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)

考场只打了暴力

[sum_{i=1}^n {C_n^i*C_m^i} ]

[sum_{i=1}^n {{C_n^i}*{C_m^{m-i}}} ]

[C_{n+m}^n ]

形象的理解其实就是从(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码农题,看了题解就溜了

原文地址:https://www.cnblogs.com/coder-cjh/p/13854814.html