2013年8月4日

CF335B

摘要: 1 /*CF335B 2 这个题目的n达到50000,但是串只是有小写字母组成,所以如果字符串的长度大于2600,那么 3 肯定存在,所开始输入就判断如果长度大于2600,那么直接找当个字母输出100个 4 否则执行LCS模块,然后判断所得最长公共是否大于100,如果小于100,那么直接输出最长公共 5 否则从两头分别取50个输出*/ 6 #include 7 #include 8 int dp[2600][2600],dir[2600][2600]; 9 char a[50005],b[2605],c[2605];10 void LCS(int n,int m)11 {12 in... 阅读全文

posted @ 2013-08-04 21:56 ok_boy 阅读(3359) 评论(0) 推荐(0) 编辑

HDU2385Stock

摘要: 1 /*既然前一天的可以省下来给过后一天卖,那么就倒着卖,那么最后一天的只能在最后一天卖,如果可以卖完,还有可卖的名额,那么就从 2 倒数第二天取,如果卖不完只能丢掉,而且必定是尽量留到价格最高的那一天卖*/ 3 /*HDU2385*/ 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 const int maxn=100000+10;10 struct N11 {12 int x,p,m;13 bool operator q;24 N a;25 while(t--)26 ... 阅读全文

posted @ 2013-08-04 17:53 ok_boy 阅读(299) 评论(0) 推荐(0) 编辑

滚动数组处理数据很大的公共子序列问题

摘要: 1 #include 2 #include 3 char a[5010],b[5010]; 4 short int dp[2][5010]; 5 int LCS(int n,int m) 6 { 7 memset(dp, 0, sizeof(dp)); 8 int i,j; 9 for(i=1;i=dp[i%2][j-1])18 {19 dp[i%2][j]=dp[(i-1)%2][j];20 //printf("%d %d %d\n",i%2,j,dp[i%2][j]);21 ... 阅读全文

posted @ 2013-08-04 01:12 ok_boy 阅读(141) 评论(0) 推荐(0) 编辑

导航