還記得 noip 2012 提高組 day1 的國王遊戲嗎?時光飛逝,光陰荏苒,兩年
過去了。國王遊戲早已過時,如今已被皇后遊戲取代,請你來解決類似於國王遊
戲的另乙個問題。
皇后有 n 位大臣,每位大臣的左右手上面分別寫上了乙個正整數。恰逢國慶
節來臨,皇后決定為 n 位大臣頒發獎金,其中第 i 位大臣所獲得的獎金數目為第
i-1 位大臣所獲得獎金數目與前 i 位大臣左手上的數的和的較大值再加上第 i 位
大臣右手上的數。
形式化地講:我們設第 i 位大臣左手上的正整數為 ai,右手上的正整數為 bi,
則第 i 位大臣獲得的獎金數目為 ci可以表達為:
當然,吝嗇的皇后並不希望太多的獎金被發給大臣,所以她想請你來重新安
排一下隊伍的順序,使得獲得獎金最多的大臣,所獲獎金數目盡可能的少。
注意:重新安排隊伍並不意味著一定要打亂順序,我們允許不改變任何一
位大臣的位置。
輸入格式:
第一行包含乙個正整數 t,表示測試資料的組數。
接下來 t 個部分,每個部分的第一行包含乙個正整數 n,表示大臣的數目。
每個部分接下來 n 行中,每行兩個正整數,分別為 ai和 bi,含義如上文所述。
輸出格式:
共 t 行,每行包含乙個整數,表示獲得獎金最多的大臣所獲得的獎金數目。
輸入樣例#1:複製
1
34 1
2 21 2
輸出樣例#1:複製
8
輸入樣例#2:複製
2
585 100
95 99
76 87
60 97
79 85
129 68
18 45
52 61
39 83
63 67
45 99
52 54
82 100
23 54
99 94
63 100
52 68
輸出樣例#2:複製
528
902
按照 1、2、3 這樣排列隊伍,獲得最多獎金的大臣獲得獎金的數目為 10;
按照 1、3、2 這樣排列隊伍,獲得最多獎金的大臣獲得獎金的數目為 9;
按照 2、1、3 這樣排列隊伍,獲得最多獎金的大臣獲得獎金的數目為 9;
按照 2、3、1 這樣排列隊伍,獲得最多獎金的大臣獲得獎金的數目為 8;
按照 3、1、2 這樣排列隊伍,獲得最多獎金的大臣獲得獎金的數目為 9;
按照 3、2、1 這樣排列隊伍,獲得最多獎金的大臣獲得獎金的數目為 8。
當按照 3、2、1 這樣排列隊伍時,三位大臣左右手的數分別為:
(1, 2)、(2, 2)、(4, 1)
第 1 位大臣獲得的獎金為 1 + 2 = 3;
第 2 位大臣獲得的獎金為 max + 2 = 5;
第 3 為大臣獲得的獎金為 max + 1 = 8。
對於全部測試資料滿足: t \le 10t≤10 , 1 \le n \le 20\ 0001≤n≤20 000 , 1 \le a_i, b_i \le 10^91≤ai,bi≤109 。
水題,只用找出排列的順序就好,總共四種排序;
也就相當於四種貪心
**如下:
#include #define maxn 2005555
typedef long long ll;
using namespace std;
struct hand
a[maxn];
int cmp(hand a,hand b)
int main()
sort(a + 1, a + n + 1,cmp);
ll ans = 0,k = 0;
for(int i = 1; i <= n; i ++)
cout << ans << endl;
}return 0;
}
貪心 洛谷P2123 皇后遊戲
給定一種結構體陣列,其包含 a a 陣列和b role presentation b b陣列,定義一種陣列 c c 其公式為 拭排列此結構體的順序使得c n c n 最小化 這道題用貪心,我們可以像證明國王遊戲一樣,用微擾的方法證明貪心的正確性 luogu judger enable o2 incl...
題解 洛谷P2123皇后遊戲 貪心
題目鏈結 根據國王遊戲的經驗,嘗試著用微擾證明,結果證明過程有誤,學習了大佬題解以後發現我的證明過程確實存在問題。include include include using namespace std define rep i,a,b for int i a i b i const int n 2e...
luoguP2123 皇后遊戲 貪心
洛谷題目chuanso 有一篇好題解,我就懶得推式子了,畢竟打到電腦上還是很難的 牛逼題解傳送門 include include include include include include include include include include include define rg reg...