2017年11月16日训练总结

这次训练总结是11月13日到11月16日。

总体来说,看了一些树形DP的资料和博客,打了两场比赛,也有一些收获。

新开了树形DP专题,由于之前的dfs知识比较扎实,又学习了字典树,对树有了一定的认识,因此树形DP的思想也很快就懂了,就是把DP放在树上做。

然而不幸的是...DP好久没怎么练了...简单的题想个转移方程就得想老半天...除了A了几道博客上见过的题目以外剩下的已经做了的几道都花费了较长的时间,首先就是题目题干比较长,在博客上看过的就直接写代码了,但是没见过的就要从头开始看。。。作为英语渣看懂题意就得花费大量时间。。。(马上考四级了Orz)看懂了之后就是状态转移方程。。。在纸上各种乱画,最后终于想出来了。。。

目前已经做的题目主要分为以下几类:

1、某节点出发到达的最远距离或最大权值。

2、删边、删点问题。注意删一个点时不要把兄弟的点也删了。

3、求树的重心,这里我用了两个dfs,一个统计节点数,另一个求重心。

4、给m次机会,经过树上一个点需要消耗一定数量的机会,经过这个点会获得这个点的权值。但是要经过一个点,必须先经过他的父节点。求能得到的最大权值。状态转移方程是

dp[u][j]=max(dp[u][j],dp[u][j-k]+dp[z][k]);//dp[u][j]是第u个点用j次机会获得的最大权值,k是用来访问子节点z的剩下的机会(k从1到j-访问j点所消耗的机会数量,j是 从m到 访问j点所消耗的机会数量)。

还有两道直接建树+dfs就解决的题。。。算树形DP入门吧。

感觉有几个地方要注意,一是确定有向树和无向树,虽然目前还没在这个地方错过,但是感觉肯定有题目在这里有坑,需要多加注意。建树的时候注意子节点和父节点不要反了。。。有一道题建反了样例怎么都过不了,找了半天发现xy输入反了。。。还有上面第四点有一道题,g【i】和c【i】输入反了样例居然过了,交了一发wr。后来发现换过来样例都过不了。。。改了半天又发现是细节问题。。。有的题目答案需要排序,或者是存在负值等都需要注意,还有,没有根节点就要构建一个。感觉细节的地方比以前好一点点了,但是依然需要更加注意。。。树形DP还仅仅是个开始。

正在学习解决树形01背包。。。目前十分艰难。。。

字典树的专题被一道题卡住了,Orz。。。

打了一场cf的比赛,状态不太好,只出了2题。昨晚的比赛又是只出了两题,都是简单的思维暴力题。。。由于一个小细节的失误导致A出的第二题罚时上天。一共出了2道,排在两道末尾。其他题也都不简单。。。

细节细节细节注意!!!读题读题读题要快!!!状态转移方程...加油想吧。

今天A了不少题(其实也不足10道)。。。感觉有点累,明天继续加油吧。

你可能感兴趣的:(训练日记)