又是一个背包问题,动态规划求解:/*ID: qq104801LANG: C++TASK: rockers*/#include #include #include #include #include #include #include using namespace std;#define nmax ...
                            
                            
                                分类:
其他好文   时间:
2014-09-16 23:27:51   
                                阅读次数:
238
                             
                         
                    
                        
                            
                            
                                这题应该是POJ最强大的一道数位DP了吧 正解是AC自动机 不会 还是写数位DP吧
题目大意:我们令含有666的数字为不吉利数字,则可以得到一个递增数列:
{an}=666,1666,2666,3666,4666,5666,6660,6661,....
给定n,求an
首先我们把这个问题转化成另一个问题:给定n,求1~n中有多少个数含有666
解决了这个问题,把原问题二分答案即可
首先...
                            
                            
                                分类:
其他好文   时间:
2014-09-16 17:28:00   
                                阅读次数:
243
                             
                         
                    
                        
                            
                            
                                呵呵,这个可用动态规划,d(i,j)=min(d(i-1,j),d(i,j-1),d(i-1,j-1)+1/*ID: qq104801LANG: C++TASK: range*/#include #include #include #include #include #include #includ...
                            
                            
                                分类:
其他好文   时间:
2014-09-16 15:55:11   
                                阅读次数:
302
                             
                         
                    
                        
                            
                            
                                测试用例:输入:1,-1,2,-3,4,-5,6,-7输出:4 1 int lis(int array[]){ 2 int n=sizeof(array); 3 //定义lisMax存放当前的最长递增序列 4 int nMax=1; 5 //list[i]中放着从ar...
                            
                            
                                分类:
其他好文   时间:
2014-09-15 22:32:29   
                                阅读次数:
302
                             
                         
                    
                        
                            
                            
                                最长公共子串(Longest Common Substring)是一个非常经典的问题,它的基本描述为“给定两个字符串,求出它们之间最长的相同子字符串(要求连续)的长度”。求N个最长为L的字符串的的LCS的方法大致可分为以下几类:1.枚举法显然是简单但极端低效的算法,改进一些的算法是用一个串的每个后缀对其他所有串进行部分匹配,用KMP算法,时间复杂度为O(NL2)。2.动态规划解法:平方的时间算法。3.后缀数组与高度数组解法,利用二分查找技术,时间复杂度为O(NLlogL)。3.广义后缀树方法,时间复杂度为可...
                            
                            
                                分类:
其他好文   时间:
2014-09-15 21:22:49   
                                阅读次数:
389
                             
                         
                    
                        
                            
                            
                                MagicBuilding
Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1314    Accepted Submission(s): 599
Problem Description
As the incr...
                            
                            
                                分类:
其他好文   时间:
2014-09-15 16:01:09   
                                阅读次数:
217
                             
                         
                    
                        
                            
                            
                                Eddy's AC难题
Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3770    Accepted Submission(s): 1765
Problem Description
Eddy是个ACMer,他不...
                            
                            
                                分类:
其他好文   时间:
2014-09-15 16:00:09   
                                阅读次数:
221
                             
                         
                    
                        
                            
                            
                                题目:给你一个n*m的数字表格,找到一条从左到右的路径,使得上面的数字和最小。
           (每次可以从(i,j),走到(i,j+1),(i+1,j),(i-1,j)可以越界。)
分析:dp,动态规划。因为要字典序最小,所以采用从右向左的方式dp;
           状态:f(i,j)表示走到(i,j)的最小和,则有转移方程:
           f(i,j)= min(f...
                            
                            
                                分类:
其他好文   时间:
2014-09-15 14:20:59   
                                阅读次数:
177
                             
                         
                    
                        
                            
                            
                                题目:有一个长l的木头,切成n+1段,切割的代价是当前段长度,求最小代价和。
分析:dp,区间动态规划。石子合并的逆过程。
           状态:设F(i,j)为从点i切到j长度的木头切割成对应的小段代价,则有转移方程:
            F(i,j)= min(F(i,k)+F(k,j)+cost(i,j)) {其中 i 
           这里注意,dp过程按区间大小递...
                            
                            
                                分类:
其他好文   时间:
2014-09-15 11:20:48   
                                阅读次数:
187
                             
                         
                    
                        
                            
                            
                                分组背包思想与树形DP的结合,极为机智的动态规划。...
                            
                            
                                分类:
移动开发   时间:
2014-09-13 00:49:34   
                                阅读次数:
303