题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1513 题意: 给你一个字符串s,你可以在s中的任意位置添加任意字符,问你将s变成一个回文串最少需要添加字符的个数。 题解1(LCS): 很神奇的做法。 先求s和s的反串的LCS,也就是原串中已经满足回文 ...
分类:
其他好文 时间:
2017-08-16 23:22:46
阅读次数:
422
很自然想到DP 这道题使我意识到自己的DP功力还有很大不足 用f[i][j][k][0/1]表示A串到i位,B串到j位,A串分为了k部分,第i位是否匹配进B串的方案数(一般套路) 优化:滚动数组,设置pre,now, 教训: 1、别图省事,把该写全的写全 2、找个好弄一点的DP边界 3、一个方程不大 ...
分类:
其他好文 时间:
2017-08-13 16:18:38
阅读次数:
166
https://i.cnblogs.com/EditPosts.aspx?opt=1 这里主要是想改进一下二维数组的做法,用一维数组来实现01背包,也叫做滚动数组! 先借用某位大牛的一句话:“01背包在二维数组上操作,就是为了防止一个物品被放入多次的情况“ 但其实01背包也可以用一维数组来做啦! 这 ...
分类:
其他好文 时间:
2017-08-11 21:09:44
阅读次数:
164
【转载】夜深人静写算法(四) - 差分约束 目录 一、引例 1、一类不等式组的解 二、最短路 1、Dijkstra 2、图的存储 3、链式前向星 4、Dijkstra + 优先队列 5、Bellman-Ford 6、SPFA 7、Floyd-Warshall 三、差分约束 1、数形结合 2、三角不等 ...
分类:
编程语言 时间:
2017-08-07 10:19:58
阅读次数:
198
The Values You Can Make 题意:给n个数,第一次在这n个数中选出一些子序列,使得子序列和为k,然后再从这些和为k的子序列为k的数中再选出一些子序列,求第二次选出来的这些子序列的和的可能的值为多少,并升序输出(可以一个都不选) 思路:二维01背包方案数+滚动数组优化。 dp[i] ...
分类:
其他好文 时间:
2017-08-07 00:11:13
阅读次数:
193
题目链接:http://codeforces.com/contest/837/problem/D 题意:n个数里选k个数,使得它们的乘积末尾0个数最多。 只需要统计每个数的2和5的数量,一个作为容量,一个作为价值。f(i,k,j)表示前i个数选k个,一共有j个2的时候,5最多有几个。 外层枚举前i个 ...
分类:
编程语言 时间:
2017-08-06 23:08:26
阅读次数:
215
题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4008 题目描述: 一共n首歌儿, 要求在t时间唱尽可能多的歌儿, 相同的歌儿的数量下总时长尽 ...
分类:
其他好文 时间:
2017-08-05 13:24:08
阅读次数:
134
有两辆车,容量都为K,有n(10w)个人被划分成m(2k)组,依次上车,每个人上车花一秒。每一组的人都要上同一辆车,一辆车的等待时间是其停留时间*其载的人数,问最小的两辆车的总等待时间。 是f(i,j)表示前i组,j个人是否可行。w(i)表示第i组的人数。 if f(i,j)==1 then f(i ...
分类:
编程语言 时间:
2017-08-04 22:49:13
阅读次数:
202
给你n个数,让你任选K个,使得它们乘起来以后结尾的0最多。 将每个数的因子2和因子5的数量求出来,记作a[i]和b[i]。 答案就是max{ min{Σa[i],Σb[i]} }(a[i],b[i]是选择的那些数)。 暴力dp是f(i,j,k)表示前i个数,选j个,其中包含k个5的情况下,最多能包含 ...
分类:
编程语言 时间:
2017-08-04 10:08:05
阅读次数:
152
题目描述 给定 n 个数求这 n 个数划分成互不相交的 m 段的最大 m 子段和。 给出一段整数序列 A1,A2,A3,A4,...,Ax,...,An ,其中 1≤x≤n≤1,000,000, -32768≤Sx≤32767。 我们定义一种函数 sum(i,j)=Ai + ... + Aj (1≤ ...
分类:
编程语言 时间:
2017-07-29 11:37:12
阅读次数:
312