CODEVS
NOI2002 贪吃的九头蛇 codevs 1746
题解:树形DP,发现当”小头”大于等于2的时候,我们可以让小头们交替地去吃果子,比如son让小头A吃,可以让小头B吃father,让小头A吃grandfather,再让小头B吃grandgrandfather…所以我们发现其实只和”大头”吃那些点有关,所以我们定义dp[i][j][k]表示当前在位置i,i的子树里面大头吃j个,其中位置i的大头吃不吃,于是我们先多叉树转二叉树,然后跑树上DP即可
22ssm的题解
BZOJ
BZOJ2321 [BeiJing2011集训] 星器
题解:这题神了,考场上根本想不出来的解法(不过运气好还是能找规律找出来),显然牵扯到能量,自然联想到能量守恒定律,初始能量总和减去末尾能量总和就是释放的能量,于是我们发现可以定义一个点的欧几里得距离的平方的和为势能,也就是一个点的能量为 x2+y2 ,前势能总和减去后势能总和就可以得到答案了,神题…
popoQQQ大爷的题解
BZOJ 3140 [HNOI 2013] 消毒
题解:这题有意思的,状压+二分图匹配,好好玩儿呀
可以发现,我们可以一层一层地选取,如果我们把一层全部选了的话,只用花费1的代价
由于 a∗b∗c<=5000 ,所以最短的边最大是 17 ,因此我们把最短的边找出来,作为高,所以我们只需要二进制枚举横着切那些层,然后剩下的所有我们竖着处理,竖着一层一层地切,于是我们把剩下的”压”下来,压成一层,然后跑匈牙利即可233
qpswwww的题解
BZOJ3594 [SCOI2014方伯伯的玉米田]
题解:二维树状数组优化DP,显然对于一段区间+1的操作,我们每次+1的时候,右端点都应该是末尾,否则只有可能让答案变少而不会变多,所以我们只需要定义
dp[i][j] 表示前 i 个数,在这