HDU1800(貪心,lis變形)

2021-08-15 16:57:52 字數 752 閱讀 2019

題意:給你n個數,求這些數經過排序後能組成幾組嚴格上公升子串行。

解題思路:一開始直接排序模擬,時間複雜度o(n*n)。接著發現其實就是找序列中重複最多的元素。為什麼呢?你想,我們序列排完後假如都不重複就所有人共用1個掃把;如果某段有個元素重複,我們把它提出來,單獨一組,假如有多個重複,並且重複的元素都互相不重複,就相當於多1組出來,否則,就再多。找重複元素我們可以用之前stl二分查詢的兩個函式,處理,之前stl一篇有講過它們相減的特殊含義。

暴力**:

#include#include#include#include#includeusing namespace std;

const int maxn=100010;

struct node

a[maxn];

int cmp(node a,node b)

sort(a,a+n,cmp);

cnt=0;

for(i=0;itail)

}cnt++;

}} cout<#include#include#include#includeusing namespace std;

const int maxn=100010;

int a[maxn];

int max(int a,int b)

int main()

sort(a,a+n);

cnt=0;

for(i=0;icout<} return 0;

}

HDU1800 字典樹寫法

題意 高階魔法師可以教低階魔法師 魔法掃把技能,同時教會了的低階魔法師又可以教比他更低階是,是傳遞的關係 同時如果教會了的話,他們可以同時坐乙個掃把 問最少需要多少個掃把 思路 就是判斷相同的數字最多的是幾個 他們分別乘坐乙個掃把,這樣其他的也能合理分配進這幾個掃把 坑 這裡剛開始陣列開得過大總超時...

hdu 1800 簡單字串處理

這道題題目如果想對了,那麼就簡單了,簡單說一下 1 等級高的可以在同一木棒上教等級低的,最多只能教乙個,當然也可以選擇不教 2 徒弟最多只能有乙個師傅,但沒有師傅也是可以的 3 問最少需要多少個木棒 貪心思想,也就是只要找到出現次數最多的那個數就行,因為乙個師傅最多只能教乙個徒弟,而且乙個徒弟最多只...

HDU 1800 字串雜湊

從n個數中,最少能分出幾個單調遞增序列。水題。就是找到n個數中出現次數最多的次數。只是n個數範圍有30個十進位制位,需要當成字串處理,這就用到了字串雜湊。include using namespace std const int maxn 3005 const int mod 100007 stru...