題目描述:
為了迎接奧運,市體育局舉行手拉手大包圍活動,開始時n個人手拉手圍成乙個圈。後來這些人中的一些按順序向裡面出圈形成乙個新圈。從而使原圈形成乙個從高到低,最低與最高連線的圈。新圈重複相同的操作,直到沒有人要出圈為止。問最少要形成多少個這樣的圈。
輸入:第一行n個人,第二行輸入n個人的身高(每個身高中用空格隔開)n<=1000
輸出:最少形成多少個這樣的圈。
定理:下降子串行的個數等於最長不下降子串行的長度。
稍微想一想就明白了。
將圈拆成段列舉就是了。二分優化:最長不下降子串行的o(n*logn)演算法
話說和[noip1999]攔截飛彈 差不多,應該也可以用貪心。
1 #include2//#include
3using
namespace
std;4//
ifstream fin("cin.in");56
int n,h[2005],c[2005],len=0,ans=10000;7
8int find(int
x)16
return
l;17}18
19int
main()
2035 ans=min(ans,len); 36}
3738 cout39//
system("pause");
40return0;
4142 }
動態規劃 二分 奧運大包圍
題目描述 為了迎接奧運,市體育局舉行手拉手大包圍活動,開始時n個人手拉手圍成乙個圈。後來這些人中的一些按順序向裡面出圈形成乙個新圈。從而使原圈形成乙個從高到低,最低與最高連線的圈。新圈重複相同的操作,直到沒有人要出圈為止。問最少要形成多少個這樣的圈。輸入 第一行n個人,第二行輸入n個人的身高 每個身...
題目1007 奧運排序問題
題目1007 奧運排序問題 時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 3180 解決 669 題目描述 按要求,給國家進行排名。輸入 有多組資料。第一行給出國家數n,要求排名的國家數m,國家號從0到n 1。第二行開始的n行給定國家或地區的奧運金牌數,獎牌數,人口數 百萬 接下來一行...
題目1007 奧運排序問題
時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 9031 解決 1952 題目描述 按要求,給國家進行排名。輸入 有多組資料。第一行給出國家數n,要求排名的國家數m,國家號從0到n 1。第二行開始的n行給定國家或地區的奧運金牌數,獎牌數,人口數 百萬 接下來一行給出m個國家號。輸出 排序...