2015~2016(hdu)
文章平均质量分 79
w-y-p
这个作者很懒,什么都没留下…
展开
-
hdu 3555(数位dp入门)
题意就是求从整数1到N中有多少个含有“49”的数? 比如N=500,那么 "49","149","249","349","449","490","491","492","493","494","495","496","497","498","499", dp[i][1]=dp[i-1][0]; //在不含49的情况下高位加9 dp[i][2]=dp[i-1][2]*10+dp[i-1][1];原创 2015-09-29 21:39:52 · 440 阅读 · 0 评论 -
hdu-5489(2015网络赛合肥赛区)***
题目链接 题意:给定一个长度为N=105的序列 求删去连续长度为0=L=N的序列后的LIS 思路: 假设你已经会O(nlogn)的LIS, 删去i 前面连续一段长度为L 即[i−L,i-1]的 序列, 左边是i−L−1, 右边是i, 求剩下的LIS 首先预处理出: f[i]:=以a[i]结尾的LIS的最大长度 g[i]:=以a[i]开头的LIS的最大长原创 2015-09-30 19:34:44 · 490 阅读 · 0 评论 -
poj-5497
题目链接 题意: 你有一个序列\{a_1,a_2,...,a_n\}{a1,a2,...,an},然后你可以删除一个长度为mm的连续子序列. 问如何删除才能使逆序对最少. //#pragma comment(linker, "/STACK:102400000,102400000") #include #include #include #include #in原创 2015-10-06 16:49:04 · 330 阅读 · 0 评论 -
hdu 4622 Reincarnation(后缀树组求子串个数)
题意:求字符串任意区间子串个数。 思路: 首先对整个字符串求一次sa[]以及height[],之后对于任意区间[L, R],遍历一遍sa[],只要起点在[L, R]内的后缀就需要进行统计法,不过有一个地方要特别注意的就是全部的sa[]不一定就是区间内的sa[],这是因为区间内的后缀比较时有额外的长度限制。可以证明遍历的过程要遵循如下的规则: 后缀s1和后缀s2现在是两个待比较的后缀,原创 2015-11-07 12:13:41 · 583 阅读 · 0 评论 -
uva 1401Remember the Word(trie树+dp)
题意:给一个由s个单词组成的字典和一个长字符串。把这个字符串分解成若干个单词的连接(单词可重复使用),有多少种方法? 思路:令d(x)表示从字符i开始的字符串(即后缀s[i....L])的分解方案数,则d(i)=sum{d+len(x) | 单词x是s[i...L]的前缀}。 所以可以先把单词写入trie树,然后从从后往前在长串的每个位置找前缀即可。 #include #i原创 2015-11-07 12:05:20 · 368 阅读 · 0 评论 -
hdu-4812(树分治 点权)
题意:给出n个点的树,每个结点有权值,求一条路径,使得路径上点的乘积对1e6+3取模的结果为K。 思路:树上的基于点的分治,如何计算乘积为K的路径呢?对于每个分支的点,计算从根节点到当前点的乘积x,然后利用逆元可以算出y=K*x^(-1),然后通过hash去查找y的值是否出现过即可,逆元可以用扩展欧几里得预处理出来,对于相应的值要标记最小能得到它的点,边搞边去更新ans就行了。 注意:为了防止原创 2015-09-30 13:36:45 · 451 阅读 · 0 评论