2018 8 4牛客網暑期ACM訓練第六場 A題

2021-08-22 07:09:56 字數 640 閱讀 4924

題目大意:有2^n個歌手,每個歌手會準備n首歌去唱,每首歌有它的分數,分數高的就贏。兩兩相比,贏的人繼續兩兩相比,直到冠軍出來。

分析:用乙個二維陣列儲存每個比賽歌手準備的歌曲,並且用該陣列繼續儲存每輪勝者還可以唱的歌曲。可以知道,每個歌手要保證自己每場都贏,就要用比對手最高分歌曲還高的歌曲唱,並且在符合上述條件下,盡量選擇分低的(貪心)。

#includeusing namespace std;

#include#include #include#includeint a[20000][20];

int main()

for(int i=0;ia[i+1][n-1])

}int b=0;

for(int j=0;j<=n;j++)

}else

}int b=0;

for(int j=0;j<=n;j++)

} }

num/=2;

if(num==1) break; // n==1時,冠軍就出來了

n=n-1;

} printf("case #%d: %d\n",k++,a[0][0]); //最後的情況下,陣列裡只有選手序號了

}return 0;

}

牛客網暑期ACM多校訓練營(第九場)

做法 看到下標 xor 這種情況就想 fwt 可是半天沒思路,於是放棄了。其實這個 n 瘋狂暗示啊。設未知數向量為 x 列一下方程組就可以發現有 b k sum a i x j 做法就顯然了吧,把 a 和 b 分別 fwt 對應相除然後反變換即可。表示前天才學的 fwt 就不會使了。include ...

牛客網暑期ACM多校訓練營(第五場)

二分答案,然後就轉化為是否滿足 frac d sum s i c i sum s i d sum s i c i d 0 顯然科目越少gpa越高,於是去掉最小的k個判斷即可。include define rep i,a,b for int i a i b i define per i,a,b for...

牛客網暑期ACM多校訓練營(第二場)

a run 基礎dp,直接做就行了。dp時候求出來到哪個距離有幾種走法,然後求一下字首和。輸出答案的時候減一下就行了。include include include include include include include include using namespace std define ...