寒假ACM集訓複習總結Day3 helman

2022-09-01 08:45:14 字數 968 閱讀 9661

這一天學的是貪心演算法和暴力列舉

感覺比第一天的思維題還簡單,也許是因為全部列出來是人的普遍想法吧

那就放幾個經典例題吧

hdu - 2037

一道經典的看電視的問題,給出一系列節目的開始結束時間,算出你最多能看幾部

思路是要對每個節目的結束時間從小到大排序,每次選擇結束時間早的不和上乙個節目衝突的節目

#include using

namespace

std;

struct

tvt[

101];

bool cmp(tv &a,tv &b)

intmain()

cout

}return0;

}

又是一道經典例題,數塔問題,這裡分成兩個方法求解

hdu - 2084

第一種是通過分析後,我們採用動態分析的思想,從下到上,每次都選擇下一行裡最大的數相加,**如下

#include using

namespace

std;

const

int maxn=1e4+7

;int

main()

cout

<1][1]<}

return0;

}

第二種方法是從上到下,這種做法缺點是求每乙個數時都要從塔頂開始加起,十分費時,解決方法就是建立乙個陣列來儲存算好的數的值,這種方法叫做記憶化搜尋,也叫備忘錄

#include using

namespace

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...