“kuangbin带你飞”专题计划——专题十二:基础DP1
寫在前面
1.開始時間:2021-05-27
2.專題傳送門:[kuangbin帶你飛]專題1-23
3.題意題解貢獻:kuangbin 專題十二 基礎DP1
4.我的總結:DP基礎知識總結
?
題目:
1.(題解傳送門)Max Sum Plus Plus HDU - 1024 :連續的n個數中求出和最大的不相交的m段+DP空間優化(不停學習更多的dp方式)
2.(不需要題解)Ignatius and the Princess IV HDU - 1029 :找出數組中出現次數>=(n+1)/2的數。(大水題)
3.(不需要題解)Monkey and Banana HDU - 1069 :(依舊大水題)給n<=30個長方體的長,寬,高,每種可以無限個,而且可以任意翻轉,問最高能堆成多高的梯子(上面的長方體的長,寬嚴格小于下面的長寬):一種拓展成3種,然后排序,一個二重循環就ok了。下面還是簡單貼個代碼
#include <algorithm> #include <cstdio> #include <cstring> #include <iostream> #include <map> #include <string>using namespace std; const int N = 30 * 6 + 10;struct node {int a, b, c;node(int a = 0, int b = 0, int c = 0) : a(a), b(b), c(c) {}bool operator<(node t) const {if (a == t.a)return b > t.b;elsereturn a > t.a;} } s[N]; int n, a, b, c, dp[N]; int cnt; signed main() {int cas = 0;while (cin >> n) {if (n == 0) break;memset(dp, 0, sizeof(dp));cnt = 0;int i, j;for (i = 1; i <= n; i++) {scanf("%d%d%d", &a, &b, &c);s[++cnt] = node(max(a, b), min(a, b), c);s[++cnt] = node(max(a, c), min(a, c), b);s[++cnt] = node(max(b, c), min(b, c), a);}sort(s + 1, s + 1 + cnt);//不必特意找bug,先把整體結構寫出來,在這個過程中,可能很多bug不用可以去找就能解決了;另外如果發現方法不對,也可以節約時間。// for (i = 1; i <= cnt; i++) {// printf(":::%d %d %d %d\n", i, s[i].a, s[i].b, s[i].c);// }for (i = 1; i <= cnt; i++) {dp[i] = s[i].c;for (j = i - 1; j >= 1; j--) {if (s[i].a < s[j].a && s[i].b < s[j].b)dp[i] = max(dp[i], dp[j] + s[i].c);}}int mx = 0;for (i = 1; i <= cnt; i++) mx = max(mx, dp[i]);printf("Case %d: maximum height = %d\n", ++cas, mx);}return 0; }4.Doing Homework HDU - 1074 :
5.(不需要題解)Super Jumping! Jumping! Jumping! HDU - 1087 :和HDU1069幾乎一樣的題,就是變了個殼子。
6.(不需要題解)Piggy-Bank HDU - 1114 :裸的完全背包問題,題意需要注意一下。
7.(不需要題解)免費餡餅 HDU - 1176 :簡單DP(需要刷的DP題還多,這么簡單的DP就不必寫博客了。總結下基礎知識到DP基礎知識總結就OK了)
8.(不需要題解)Tickets HDU - 1260 :就是個和走樓梯一樣的簡單dp
9.(題解傳送門)最少攔截系統 HDU - 1257 :最長上升子序列——O(nlogn)
10.(不需要題解)FatMouse's Speed HDU - 1160 :水題pass(又是HDU-1069一類的題)
11.Jury Compromise POJ - 1015 :
12.(不需要題解)Common Subsequence POJ - 1458 :最長公共子序列模板題(已經總結在經典例題中)
13.(不需要題解)Help Jimmy POJ - 1661 :認真讀題就Ok
14.(不需要題解)Longest Ordered Subsequence POJ - 2533 :最長不上升/下降子序列(已經總結在經典例題中)
15.(題解傳送門)Treats for the Cows POJ - 3186 :雙端隊列有權取數+區間DP
16.(題解傳送門)FatMouse and Cheese HDU - 1078 :記憶化搜索+拓撲排序
17.(題解傳送門)Phalanx HDU - 2859 :矩形中求最大的對稱正方形
18.(不需要題解)Milking Time POJ - 3616 :有點兒意思,G++過得了,C++卻runtime erorr。不知道哪里的問題,有這個意識吧——實在檢查不出來就試試換一種編譯器(C++/G++)。
19.(題解傳送門)Making the Grade POJ - 3666 :將一個數組變成 嚴格&不嚴格,不遞增&不遞減 的數組的最小代價
總結
以上是生活随笔為你收集整理的“kuangbin带你飞”专题计划——专题十二:基础DP1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不要错过秋招
- 下一篇: 常用的计算机PDF资源下载网站