洛谷P1803 凌亂的yyy dp

2022-05-01 12:39:10 字數 1396 閱讀 9350

我要日更嚶嚶嚶》_<

原題戳》

<<(其實是戳不動的,複製貼上吧)

快noip了,yyy很緊張!

現在各大oj上有n個比賽,每個比賽的開始、結束的時間點是知道的。

yyy認為,參加越多的比賽,noip就能考的越好(假的)

所以,他想知道他最多能參加幾個比賽。

由於yyy是蒟蒻,如果要參加乙個比賽必須善始善終,而且不能同時參加2個及以上的比賽。

輸入格式:

第一行是乙個整數n ,接下來n行每行是2個正整數ai,bi(ai輸出格式:

乙個整數最多參加的比賽數目。

輸入樣例#1:

3

0 22 4

1 3

輸出樣例#1:

2

對於20%的資料,n≤10;

對於50%的資料,n≤1000;

對於70%的資料,n≤100000;

對於100%的資料,n≤1000000,0≤ai<bi≤1000000。

這題是一道典型的貪心入門題.但既然他被放了dp標籤,就試試用dp來做吧~~~

和貪心剛開始時一樣,我們先用sort把資料排一下續,定義cmp函式為

struct miku

mk[1000005];

int cmp(miku a,miku b)

之後就是遞迴了.a[i]表示前i場考試最多參加場次.在這裡,我們需要乙個引數s,它代表著必能參加a[i]的情況下最大場次數.(借助**理解).該時刻s與i滿足mk[s+1].r>mk[i].l 且mk[s].r<=mk[i].再用動態方程a[i]=max(a[i-1],a[s]+1);可求得在i場比賽中可以參加的最多場數a[i].**如下:

#include#include

#include

using

namespace

std;

struct

miku

mk[1000005

];int

cmp(miku a,miku b)

int max(int a,int

b)int a[1000005

];int

main()

cout

}

當然~~~有這功夫貪心乙個for迴圈就結束了~~~~~但是這題對於理解dp還是有很大幫助的= =

じゃ まだ明日》w<

洛谷P1803凌亂的yyy

快noip了,yyy很緊張!現在各大oj上有n個比賽,每個比賽的開始 結束的時間點是知道的。yyy認為,參加越多的比賽,noip就能考的越好 假的 所以,他想知道他最多能參加幾個比賽。由於yyy是蒟蒻,如果要參加乙個比賽必須善始善終,而且不能同時參加2個及以上的比賽。輸入格式 第一行是乙個整數n 接...

洛谷 P1803 凌亂的yyy

快noip了,yyy很緊張!現在各大oj上有n個比賽,每個比賽的開始 結束的時間點是知道的。yyy認為,參加越多的比賽,noip就能考的越好 假的 所以,他想知道他最多能參加幾個比賽。由於yyy是蒟蒻,如果要參加乙個比賽必須善始善終,而且不能同時參加2個及以上的比賽。輸入格式 第一行是乙個整數n 接...

洛谷 P1803 凌亂的yyy 線段覆蓋

話說個人覺得前面的幾篇並不是很好,其實沒有那麼難,也沒有那麼長 很久以前就看到了,但貌似一直認為自己的演算法是錯誤的,結果交上去發現是正解 首先按照時間排序 貪心 結束時間早 盡可能不影響後面的比賽 的在前,若結束時間相同,則開始時間晚 盡可能不影響前面的比賽 的在前。如果兩者的判斷順序反了,就把最...