BestCoder
AC_Arthur
Die luft der Freiheit weht
展开
-
HDU 5623 KK's Number(DP)
题目链接:点击打开链接题意:两个人轮番从n个数中每次选择任意个数, 每次获得的分数是所选数种最小的,两人采取的策略都是使得自己的分数减去对方的分数尽量大, 求最终第一个人的得分。思路:昨天BC的C题, 因为每次可以选择若干个数, 所以普通的贪心肯定是不行的。 我们可以用d[i]表示还剩i个数时先手减去后手得分的最大值, 这样的话, 每次转移是:d[i] = max(a[j+1] - d原创 2016-02-07 14:32:53 · 2387 阅读 · 0 评论 -
HDU 5624 KK's Reconstruction(最小生成树)
题目链接:点击打开链接题意:n个城市, m条可以修建的路, 修每条路有一个费用, 要求修建路将n个城市全部联通,并且最大费用减去最小费用最小。思路:枚举最小边, 然后重新求一遍最小生成树,复杂度m^2, 出的数据水了, 左边BC水过了。。细节参见代码:#include#include#include#include#include#include#include#in原创 2016-02-07 11:25:12 · 2651 阅读 · 0 评论 -
HDU 5617 Jam's maze(DP)
题目链接:点击打开链接题意:给你一个n*n的矩阵。 求从(1,1)走到(n,n)所组成的回文串个数。思路:一开始傻逼把状态写成了d[x][y][s],s表示一个串, 用map存的, 后来发现极不可行, 因为这个状态简直太大了, 包括了s串的所有情况。 只是相当于一个dfs中的剪枝罢了。后来想到, 其实串是不必记录的, 我们只要统计个数, 所以不妨在DP的过程中就判断回文串的情况, 那原创 2016-01-31 17:06:55 · 1533 阅读 · 0 评论 -
HDU 5618 Jam's problem again (cdq分治+树状数组)
题目链接:点击打开链接题意:给n个点,求每一个点的满足xyz都小于等于它的其他点的个数。思路:经典的cdq分治+树状数组。 方法就是先按照x从小到大排序, 这样,x一定满足后面的大于等于前面的, 这样我们就可以不用管x了, 然后对y进行cdq分治,使得y满足关系, 在此基础上用树状数组顺便维护z坐标。 但是由于cdq分治每次总是要解决左边对右边的影响, 所以在相等时, 每次只更新了右边原创 2016-02-02 10:45:09 · 1923 阅读 · 0 评论 -
HDU 5634 Rikka with Phi(线段树)
题目链接:点击打开链接题意:有3种区间操作, 1是把区间内的所有数变成它的欧拉函数值, 2是把区间所有数都变成一个数x,3是查询区间和。思路:后两个操作就是线段树的区间修改和求和, 没什么好说的。 题解说用平衡树(弱不会), 不过大致思路线段树同样可以维护, 因为一个数进行最多phiO(logn)次就会变成1, 所以我们可以在递归结束,向上传标记的时候顺便看看其子区间是不是都等于1,原创 2016-02-25 13:58:22 · 1460 阅读 · 0 评论 -
HDU 5642 King's Order(数位DP)
题目链接:点击打开链接题意:要求你生成一个合法的字符串, 由小写字母a~z组成, 相同字母相邻出现不能超过3个, 求有多少种组合。思路:数位DP来做, 用d[i][j][k]表示处理完前i个字母, 第i-1个字母为j,已经连续出现了k次的方法数。 然后每次转移就很简单了, 继续选择字母j(if(k 细节参见代码:#include#include#include#include原创 2016-03-13 10:02:14 · 1121 阅读 · 1 评论