摘要: 1410dp水题 题意读了好一会 是不能连续读两个及以上单词 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 using namespace std;10 #define N 1001011 int dp[N],len[N];12 char s[N][30],ss[N*100];13 int main()14 {15 int i,g=0;16 while(scanf("%c",&ss[g])!=EOF)17 {18 g++... 阅读全文
posted @ 2014-02-10 20:03 _雨 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 1495牵扯一点数位 保存数的时候我是按2进制保存的 把1当作0算 把2当作1算 滚动数组dp[i][j][(g*10+j)%n] = min(dp[i][j][(g*10+j)%n],dp[i-1][1][g]*2+j-1,dp[i-1][2][g]*2+j-1) j取1,2 *2+j-1是因为我按二进制算的时限给出的2S就是给我这种毫无优化又笨又戳的代码的 跑了1.39s0xfffffff的范围 是2Y多 还是少用好了 太容易超了 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using name.. 阅读全文
posted @ 2014-02-10 17:46 _雨 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 1513这题好久之前就看过了,悲催的是当时看题解都没看懂,今天又看了看so easy...n个B里不能出现超过连续k个L的情况 一维递推就可以 两种情况 1、dp[i] += dp[i-1] 在i-1的串后面直接加一个B 2、dp[i]+=dp[i-2]+dp[i-3]+...+dp[i-k-1] 这部分的意思是在串后面补连续1个L 2个L 3个L。。K个L的情况 那补一个L的情况要取决于dp[i-1]里面最后一位为B的个数 正好为dp[i-2],依次可做。 1 import java.text.*; 2 import java.io.*; 3 import java.util.*; 4 im 阅读全文
posted @ 2014-02-10 16:15 _雨 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 1900二维dp挺好推 dp[i][j] = max(dp[i][j],dp[g][j-1]+o[i][i+1]-o[g][i+1])(i>g>=j-1) dp[i][j]表示第i个站台开放第j次设备 预处理出来通过i-j的人数 包括 i-1~j+1等等的 用o[i][j]表示的没睡好 %>_ 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define LL long long10 int dp[510][510],q[510];11 in 阅读全文
posted @ 2014-02-10 16:09 _雨 阅读(306) 评论(0) 推荐(0) 编辑