斯坦纳树是一类比较特殊的DP吧,主要针对点集连通问题,通常dp[i][s]表示以i为根的,连通状态为s的一棵树的最小权值,有两种转移方式, 其中state[i]表示点i的二进制标号,通常无关的点state值为0, dp[i][s] = min{dp[i][s], dp[i][j] + dp[i][k...
分类:
其他好文 时间:
2014-07-16 17:44:01
阅读次数:
247
思路是这样的,我们从第一个字符开始向后依次找,直到找到一个断句的地方,使得当前获得的子串在dict中,若找到最后都没找到,那么就是False了。
在找到第一个后,接下来找下一个断句处,当然是从第一个断句处的下一个字符开始找连续的子串,但是这时与第一个就稍有不同,比如说word=‘ab’, dict={ 'a', ab', ...},在找到a后,接下来处理的是b,我们发现b不在dict中,但是我们...
分类:
编程语言 时间:
2014-07-16 17:09:39
阅读次数:
273
题意很简单,给定一个N*N的大矩阵,求其中数值和最大的子矩阵。一开始找不到怎么DP,没有最优子结构啊,后来聪哥给了我思路,化成一维,变成最大连续和即可。为了转化成一维,必须枚举子矩阵的宽度,通过预处理的suffix可以很快计算出每一列某一段的和,然后进行一维DP即可。。总复杂度为 O(N^3);#i...
分类:
其他好文 时间:
2014-07-16 16:59:44
阅读次数:
231
/*
A - 简单dp 例题
Time Limit:1000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64u
Submit
Status
Description
A military contractor for the Department of Defense has just completed a series o...
分类:
其他好文 时间:
2014-07-16 16:15:03
阅读次数:
278
思路:dp[i][now][mark][len] i 表示当前第i 次now存的是后8位,mark为第9位为0还是1 len第九位往高位还有几位和第9位相等。 只存后8位的原因:操作只有200次每次都为加法的话后8位可以表示,如果为乘法第八位已知再加上第九位 和往前的长度已知,所以可以表示所有状态....
分类:
其他好文 时间:
2014-07-16 15:38:38
阅读次数:
392
求最长下降子序列和LIS基本思路是完全一样的,都是很经典的DP题目。问题大都类似于 有一个序列 a1,a2,a3...ak..an,求其最长下降子序列(或者求其最长不下降子序列)的长度。以最长下降子序列为例用a[i]存储序列a的第i个元素(i: 1 to n)用f[i]表示算上第i个位置的元素时最长...
分类:
其他好文 时间:
2014-07-16 15:32:40
阅读次数:
304
#include #include #include using namespace std;#define inf 10000000int dp[11000];int n;int val[550],wei[550];int main(){ int cas,n; scanf("%d",&...
分类:
其他好文 时间:
2014-07-16 15:21:06
阅读次数:
287
1、Android手机常见分辨率
WVGA:800x480
FWVGA:854x480
QHD:960x540
720P:1280x720(标清,standard definition,SD)
1080P:1920x1080(高清,high definition,HD)
2、分辨率对应dpi
dpi(dots per inch,每英寸点数)
hdpi对应WVGA、FWVGA、QHD...
分类:
移动开发 时间:
2014-07-16 13:42:42
阅读次数:
406
该题果然是个好题啊!
题意来自上一题, (
http://blog.csdn.net/jayye1994/article/details/37814965 ) BZOJ
1002: [FJOI2007]轮状病毒
上一题是旋转后相同视为不同情况,这题旋转后相同视为同一种情况。就这么一个小小的区别,
上一题用到了dp,这一题用到了dp、筛素数、二进制模拟乘法、矩阵、快速幂、欧拉函数、b...
分类:
其他好文 时间:
2014-07-16 11:26:46
阅读次数:
275
Robberies 点击打开链接
背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱 最脑残的是把总的概率以为是抢N家银行的概率之和… 把状态转移方程写成了f[j]=max{f[j],f[j-q[i].v]+q[i].money}(f[j]表示在概率j之下能抢的大洋);
正确的方程是:f[j]=max(f[j],f[j-q[i].money]*q[i...
分类:
其他好文 时间:
2014-07-16 09:28:51
阅读次数:
207