摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2844解题思路:背包 1 /////////////////////////////////////////////////////////////////////////// 2 //problem_id: hdoj 2844 3 //user_id: SCNU20102200088 4 /////////////////////////////////////////////////////////////////////////// 5 6 #include 7 #include 8 #...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1203解题思路:01背包 1 /////////////////////////////////////////////////////////////////////////// 2 //problem_id: hdoj 1203 3 //user_id: SCNU20102200088 4 /////////////////////////////////////////////////////////////////////////// 5 6 #include 7 #include 8...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546解题思路:贪心+01背包 1 /////////////////////////////////////////////////////////////////////////// 2 //problem_id: hdoj 2546 3 //user_id: SCNU20102200088 4 /////////////////////////////////////////////////////////////////////////// 5 6 #include 7 #...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602解题思路:01背包 1 /////////////////////////////////////////////////////////////////////////// 2 //problem_id: hdoj 2602 3 //user_id: SCNU20102200088 4 /////////////////////////////////////////////////////////////////////////// 5 6 #include 7 #include 8...
阅读全文
摘要:题目链接:http://poj.org/problem?id=1631题目大意:求最长上升子序列的长度解题思路:dp+二分搜索,时间复杂度为 O(n·logn). 直接 dp时间复杂度 O(n2), 会 TLE. 1 /////////////////////////////////////////////////////////////////////////// 2 //problem_id: poj 1631 3 //user_id: SCNU20102200088 4 //////////////////////////////////////////////////////
阅读全文
摘要:题目链接:http://poj.org/problem?id=2533题目大意:求最长上升子序列的长度解题思路:简单 dp, 时间复杂度 O(n2), 另有时间复杂度为 O(n·logn) 的算法,读者可自行思考。 1 /////////////////////////////////////////////////////////////////////////// 2 //problem_id: poj 2533 3 //user_id: SCNU20102200088 4 /////////////////////////////////////////////////////
阅读全文
摘要:题目链接:http://poj.org/problem?id=1887题目大意:求最长非增子序列的长度解题思路:简单 dp, 时间复杂度 O(n2), 另有时间复杂度为 O(n·logn) 的算法,读者可自行思考。 1 /////////////////////////////////////////////////////////////////////////// 2 //problem_id: poj 1887 3 //user_id: SCNU20102200088 4 /////////////////////////////////////////////////////
阅读全文
摘要:题目链接:http://poj.org/problem?id=1088解题思路:贪心+简单dp 1 /////////////////////////////////////////////////////////////////////////// 2 //problem_id: poj 1088 3 //user_id: SCNU20102200088 4 /////////////////////////////////////////////////////////////////////////// 5 6 #include 7 #include 8 #include 9 #...
阅读全文
摘要:题目链接:http://poj.org/problem?id=1014解题思路:简单dp 1 /////////////////////////////////////////////////////////////////////////// 2 //problem_id: poj 1014 3 //user_id: SCNU20102200088 4 /////////////////////////////////////////////////////////////////////////// 5 6 #include 7 #include 8 #include 9 #inc...
阅读全文
摘要:题目链接:http://poj.org/problem?id=1159题目大意:给一个字符串,求这个字符串最少增加几个字符能变成回文。解题思路:求该字符串与其反串的最长公共子序列(一定是回文)的长度,则所求为:该字符串的长度 - 最长公共子序列的长度。 1 /////////////////////////////////////////////////////////////////////////// 2 //problem_id: poj 1159 3 //user_id: SCNU20102200088 4 ///////////////////////////////////////
阅读全文
摘要:题目链接:http://poj.org/problem?id=2250题目大意:求两段文字的最长公共字串(有多组解时输出任意一种都行)解题思路:简单dp+搜索 1 /////////////////////////////////////////////////////////////////////////// 2 //problem_id: poj 2250 3 //user_id: SCNU20102200088 4 /////////////////////////////////////////////////////////////////////////// 5 6...
阅读全文
摘要:题目链接:http://poj.org/problem?id=1458题目大意:求两个字符串的公共子序列的最长长度解题思路:简单dp 1 /////////////////////////////////////////////////////////////////////////// 2 //problem_id: poj 1458 3 //user_id: SCNU20102200088 4 /////////////////////////////////////////////////////////////////////////// 5 6 #include 7 #inclu..
阅读全文
摘要:题目链接:http://poj.org/problem?id=1953题目大意:给定一个小于 45 的整数 n, 求 n 位 2 进制数中不含相邻 1 的数的个数。解题思路:记n 位 2 进制数中不含相邻 1 的数的个数为 F[n], 以其最后一位的数字进行分类处理:① 最后一位为 0, 则前 n-1 个数字只要合法就满足条件,此时有 F[n-1] 种。② 最后一位为 1, 则倒数第二位必须为 0, 其前 n-2 个数字只要合法就满足条件,此时有 F[n-2] 种。所以,F[n]=F[n-1]+F[n-2] (n≥3), 容易求得 F[1]=2, F[2]=3. (由于 F[44] 在 int
阅读全文
摘要:题目链接:http://poj.org/problem?id=2081解题思路:简单dp 1 /////////////////////////////////////////////////////////////////////////// 2 //problem_id: poj 2081 3 //user_id: SCNU20102200088 4 /////////////////////////////////////////////////////////////////////////// 5 6 #include 7 #include 8 #include 9 #inc...
阅读全文
摘要:题目链接:http://poj.org/problem?id=1579解题思路:简单dp 1 /////////////////////////////////////////////////////////////////////////// 2 //problem_id: poj 1579 3 //user_id: SCNU20102200088 4 /////////////////////////////////////////////////////////////////////////// 5 6 #include 7 #include 8 #include 9 #inc...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3664解题思路:将i 加入到已有的有 i-1 个数的排列中的方法有以下三种:①把 i 放最后,加入后 E 值不变②把 i 和一个满足 a[k]>k 的数交换,交换后 E 值不变③把 i 和一个不满足 a[k]>k 的数交换,交换后 E 值加一记 i 个数的排列中 E 值为 j 的个数为dp[i][j], 则dp[i][j]=dp[i-1][j]+dp[i-1][j]*j+dp[i-1][j-1]*(i-j). 1 /////////////////////////////////////
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176解题思路:核心为 dp[x][T]=dp[x][T]+max(dp[x-1][T+1],dp[x][T+1],dp[x+1][T+1]), 其中 1≤x≤11, 0≤T 2 #include 3 using namespace std; 4 5 int dp[15][100005]; 6 7 int max(int x,int y,int z){ 8 if(y>x) x=y; 9 if(z>x) x=z;10 return x;11 }12 13 int main(...
阅读全文
摘要:题目链接:http://poj.org/problem?id=1163解题思路:核心为 a[i-1][j]=a[i-1][j]+max(a[i][j],a[i][j+1]), 其中 1 2 using namespace std; 3 4 int main(){ 5 int n,i,j,a[101][101]; 6 cin>>n; 7 for(i=1;i>a[i][j]; 9 }10 for(i=n;i>1;i--){11 for(j=1;ja[i][j+1]? a[i][j]:a[i][j+1]);13 }14 ...
阅读全文