題目
總共有n個隊員,每個人都有乙個實力值a[i]。把n個隊員分成若干個小組。
要求分成的每個小組的隊員實力值連續,同時,乙個隊不需要兩個實力相同的選手。
給出乙個合法的分組方案,滿足所有人都恰好分到乙個小組。
使得人數最少的組人數最多,輸出人數最少的組人數的最大值。
注意:實力值可能是負數,分組的數量沒有限制。
對於100%的資料滿足:1≤n≤100000,|a[i]|≤10^9。
想通了就很簡單。
貪心。為了能讓最小的人數盡可能大,應當把滿足要求的人,放在滿足條件且人數最少的組。
往下看**加上注釋應當是可以看得懂的。
**
#include#includeint s[100010];//s記錄隊伍的長度
long long int a[100010],max[100010];//a記錄隊員的實力,max記錄每個隊伍的最大數
void dfs(int l,int r)
}if(xl) dfs(l,y);
}int main()}}
if(tt==0)//沒有符合的隊伍
else//有符合的組
} int ans=1e9;
for(int i=1;i<=num;i++)//尋找人數最少的組人數的最大值
printf("%d",ans);
return 0;
}
洛谷 P4447 AHOI2018初中組 分組
題目 一開始沒讀懂題,直接排序 模擬找最短長度,像 6 1 2 3 1 2 3這組資料這種查詢方法結果是1,正解是3 include include include include include include include include using namespace std typedef...
P4447 AHOI2018初中組 分組(貪心
傳送門 思路 貪心。將陣列從小到大排好序後,用優先佇列維護每個組的當前最大實力值和人數,按照實力值為第一關鍵字,人數為第二關鍵字排序。討論一下 因為我們是按實力值從小到大排序的,所以不會出現a i a i a i 隊首實力值的情況。1.若a i a i a i 不等於當前隊首實力值 1 1 1,則該...
P4447 AHOI2018初中組 分組 貪心
p4447 ahoi2018初中組 分組 首先想到對資料進行某種排序後順序處理,sort 因此是公升序 就可以了.一開始看到演算法標籤裡有個佇列就開了優先佇列,後來發現沒必要而且讓 看起來很複雜 最初想到的處理方式是遍歷公升序排序後的每個資料,對於每個資料遍歷所有隊伍 用二維陣列儲存所有隊伍的所有成...