這一天學的是貪心演算法和暴力列舉
感覺比第一天的思維題還簡單,也許是因為全部列出來是人的普遍想法吧
那就放幾個經典例題吧
hdu - 2037
一道經典的看電視的問題,給出一系列節目的開始結束時間,算出你最多能看幾部
思路是要對每個節目的結束時間從小到大排序,每次選擇結束時間早的不和上乙個節目衝突的節目
#include usingnamespace
std;
struct
tvt[
101];
bool cmp(tv &a,tv &b)
intmain()
cout
}return0;
}
又是一道經典例題,數塔問題,這裡分成兩個方法求解
hdu - 2084
第一種是通過分析後,我們採用動態分析的思想,從下到上,每次都選擇下一行裡最大的數相加,**如下
#include usingnamespace
std;
const
int maxn=1e4+7
;int
main()
cout
<1][1]<}
return0;
}
第二種方法是從上到下,這種做法缺點是求每乙個數時都要從塔頂開始加起,十分費時,解決方法就是建立乙個陣列來儲存算好的數的值,這種方法叫做記憶化搜尋,也叫備忘錄
#include usingnamespace
std;
const
int maxn=1e4+7
;int m[101][101],b[101][101
];int
n;int bd(int i,int
j)int
main()
return0;
}
寒假ACM集訓複習總結Day1 helman
b題 codeforces 1110b 一開始是沒想出來的。講的是用k根繃帶粘住n個壞掉的地方,求用最少的繃帶 原本的想法是將每種可能的粘法窮舉出來,求最少的繃帶 但是換個方向看,每個壞掉的地方都要粘住,意味著每處都用了一的繃帶 此時用的繃帶數就是n,每填補兩個壞處之間的距離,就會使得繃帶數減一 要...
HZNU ACM寒假集訓Day3小結 搜尋
簡單搜尋 1.dfs uva 548 樹 1.可以用陣列方式實現二叉樹,在申請結點時仍用 動態化靜態 的思想,寫newnode函式 2.給定二叉樹的中序遍歷和後序遍歷,可以構造出這棵二叉樹,方法是根據後序遍歷找到根,然後在中序遍歷中找到樹根,從而找出左右子樹的結點列表然後遞迴構造左右子樹 3.注意這...
北京集訓DAY3
消去合法的序列 剩下的不合法序列一定是 3兩種括號個數各加1除2 手算一下即可4 5 include 6 include 7 include 8 9const int maxn 100010 10 11int len,top,cnt 1213 char s maxn 1415 inthh 25int...