p1803 凌亂的yyy / 線段覆蓋
有若干場比賽,每場比賽的時間為ai和bi,求在比賽時間不衝突的情況下,能參加的比賽場數最多為多少。
考慮從早到晚來安排比賽,比賽時間結束越早,則我們之後能安排的比賽理論上就越多。所以首先先對比賽進行排序,結束時間早的優先。
設d[i]
為i
時刻之前能安排最多比賽數,則對於一場比賽而言,參加它後達到的最多比賽數為d[end] = d[begin] + 1
(加的一即為本次比賽)。
做法就是從早到晚遍歷所有時刻,如果當前時刻沒有比賽,則該時刻之前能安排的最多比賽書與上時刻相同,即d[i] = d[i-1]
。而如果當前時刻有比賽,則看安排下該比賽後是否會最多比賽數增大,若增大則更新資料。即d[i] = max(d[i], d[begin] + 1)
。
這裡之所以遍歷時刻而不是遍歷比賽的原因是,要確保每乙個時刻都有資料,避免出現中間某些時刻資料為0,而且也更符合該思路的邏輯。安排比賽是在時間線上安排的,可以通過畫線作圖的方式加以理解。
#include
#include
using
namespace std;
struct contestc[
1000001];
int d[
1000001]=
;bool
cmp(contest a,contest b)
intmain()
sort
(c,c+n,cmp)
;int ans =
0,idx =0;
for(
int i =
1;i<=
1000000
;i++
) ans =
max(ans, d[i]);
} cout << ans;
return0;
}
P1803 凌亂的yyy 線段覆蓋
p1803 凌亂的yyy 線段覆蓋 提交題目提供者 yyy2015c01 嚶嚶嚶 評測方式 雲端評測 標籤難度 普及 時空限制 1000ms 128mb 題目描述 現在各大oj上有n個比賽,每個比賽的開始 結束的時間點是知道的。yyy認為,參加越多的比賽,noip就能考的越好 假的 所以,他想知道他...
P1803 凌亂的yyy 線段覆蓋
快 noip 了,yyy 很緊張!現在各大 oj 上有 nn 個比賽,每個比賽的開始 結束的時間點是知道的。yyy 認為,參加越多的比賽,noip 就能考的越好 假的 所以,他想知道他最多能參加幾個比賽。由於 yyy 是蒟蒻,如果要參加乙個比賽必須善始善終,而且不能同時參加 22 個及以上的比賽。第...
P1803 凌亂的yyy 線段覆蓋
再一次感動我媽一整年,關於兩個資料聯絡起來排序的感想emm 主要還是思維題,考察貪心和排序,思路 要想最多,就得盡量考早結束的場次,所以以結束時間為標準排序,從小到大遍歷一遍,如果開始時間 參加的上場的結束時間,ans ans最小為1,最少參加一場是結束最早的那一場 ps 對於兩個東東關聯起來按照某...