HDU
文章平均质量分 74
hqwhqwhq
有梦想就不累
展开
-
HDU_2227 求不减子序列的个数(树状数组+DP)
题目的意思比较明确,就是求不减子序列的个数。那道题目很容易想到的是dp来写,DP的地推公式就是 dp[i] = sum{dp[j] | j 这个样子复杂度就是o(n^2),肯定过不了,我们最多能接受的复杂度是o(n*log(n)),因为这又是一个区间和的问题,我们很容易想到用树状数组来写,由于s[i]太大,先进行离散化以后就可以做了,之前的dp转移方程能想到的话,那么树状数组也就随手写了。。原创 2015-05-03 16:56:36 · 455 阅读 · 0 评论 -
HDU_2196 树形DP
题目的大意是:有一棵N个节点的树(N 用树形dp来写,dp[i]代表第i个节点的最长链的长度,dp1[i]代表第i个节点在其和其子树上的最长链的长度,dp3[[i]代表第i个节点向上的最长链的长度,这样我们写出转移方程: dp[i] = max(dp1[i],dp3[i])。 dp1[i]我们只需要一次最简单的dfs从根(1)遍历到叶子节点就好了,dp3[i]要怎么求?dp3[i]代表第i原创 2015-05-04 21:32:06 · 401 阅读 · 0 评论 -
HDU_1054 树形DP水题(树形DP小结)
给树形DP写给小结:树形DP大致就是在在树上找递推关系。对于节点i:找其父节点fa,其子节点j之间的关系(就是向上推和向下推的做法)。一般的题目就是找子节点的关系:HDU_1054,,ZOJ_2834,HDU_1520,同时找父节点和子节点的POJ_2196。其实应该怎么找,题目读完了基本就知道了。其次还有的就是该节点的状态:dp[i][N]代表这个节点有N种状态,一种状态的好像比较少,两种状态的原创 2015-05-06 23:33:19 · 490 阅读 · 0 评论 -
HDU_5247(15百度之星B题)
做法:dp[i] = dp[i-1] + (i-k+1...i这段符合+1,否则+0)。如何判断这一段符不符合,找出这段的最大值,最小值,如何差值==k-1,并且里面的数没有重复,那么就可以+1,否则,就不能+1。最大值最小值用RMQ预处理一下是nlogn的复杂度,然后查找操作,因为长度一定所以就是o(1),问题的关键就是如何判断这个区间里面是否有重复的数,(n*k)的复杂度水过去的。。。,rep原创 2015-05-31 01:06:14 · 372 阅读 · 0 评论 -
xor问题的小结(HDU_5269 && HDU_5270 && NEU_1600)
xor就是一个位运算的问题,做题的时候按二进制拆开,然后一位一位搞就好了,HDU_5269就是把数拆成二进制,然后维护一颗字母树,查找公共前缀的问题,(中间有几个小trick,秦总是dfs过的,然而我并没有去认真想怎么搞)。HDU_5270这题也是拆成2^i来搞的,但是题解上面说是归并搞(并没有看懂),如果按位直接从低位到高位来搞的话,不就是一个基数排序嘛,然后就是nlog(A)+nlogn的复杂原创 2015-06-21 00:09:11 · 842 阅读 · 0 评论 -
HDU 5381 莫队+RMQ(2015多校第8场1002)
比赛的时候没搞定怎么维护gcd求和的问题,赛后看了题解也感觉不是很懂,问了逊神,一句话提示了我:区间gcd就是一个序列而已!!!然后我就知道自己是个傻逼了。区间维护,很容易想到用一个RMQ搞定,用莫队写的话,关键在如何维护答案,[L,R] - > [L,R+1]这段中,多出来了什么东西?区间[L、L+1....R+1,R+1]这所有区间的gcd,这个题还有一个关键就是以R为左端点或者右端点的所有区原创 2015-08-14 23:53:00 · 638 阅读 · 0 评论