皇后問題(題解)

2022-05-05 18:36:13 字數 2582 閱讀 6989

皇后遊戲

【引子】

還記得noip 2012 提高組day1 的國王遊戲嗎?時光飛逝,光陰荏苒,兩年

過去了。早已過時的國王遊戲如今已被皇后遊戲取代,請你來解決類似於國王遊

戲的另乙個問題。

【問題描述】

皇后有n 位大臣,每位大臣的左右手上面分別寫上了乙個正整數。恰逢勞動

節來臨,皇后決定為n 位大臣頒發獎金,其中第i 位大臣所獲得的獎金數目為第

i-1 位大臣所獲得獎金數目與前i 位大臣左手上的數的和的較大值再加上第i 位

大臣右手上的數。

當然,吝嗇的皇后並不希望太多的獎金被發給大臣,所以她想請你來重新安

排一下隊伍的順序,使得獲得獎金最多的大臣,所獲獎金數目盡可能的少。

注意:重新安排隊伍並不意味著一定要打亂順序,我們允許不改變任何一

位大臣的位置。

【輸入格式】

第一行包含乙個正整數t,表示測試資料的組數。

接下來t 個部分,每個部分的第一行包含乙個正整數n,表示大臣的數目。

每個部分接下來n 行中,每行兩個正整數,分別為ai 和bi,含義如上文所述。

【輸出格式】

共t 行,每行包含乙個整數,表示獲得獎金最多的大臣所獲得的獎金數目。

【樣例輸入1】13

4 12 2

1 2noi 2016 模擬訓練 皇后遊戲

第 3 頁 共 8 頁

【樣例輸出1】

8【樣例說明1】

按照 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。

【樣例輸入2】25

11 89

28 32

4 78

31 93

39 33

129 75

52 28

1 73

100 46

455 53

94 89

53 44

3 239 35

26 51

5 29

【樣例輸出2】

360535

對於全部測試資料滿足 :1 ≤ ai, bi ≤ 109。

這道題,呵呵,看似簡單,實則也有點簡單。

這是題解,我猜是個人都看不懂,甚至連什麼高考題都出來了。

但是感覺本人的思路還是很好的:

先對bi進行排序,因為它算的最終值中肯定有bi[i],也就是當前的bi的值,所以可以把所有陣列都初始化成每個bi的值。

當然,式子中還有第i-1 位大臣所獲得獎金數目與前i 位大臣左手上的數的和的較大值,所以由此可以推斷出這個終值中一定有上乙個的ai的值,所以最後只要比較當前的ai的值和上乙個bi的值哪個大就行。

**:

//

#include

#include #include

#include

#include

#include

#include

#include

#include

#define mp make_pair

#define fi first

#define se second

using

namespace

std;

typedef

long

long

int64;

typedef pair

pii;

const

int maxn=200005;

intn;

pii a[maxn];

int64 dp[maxn];

inline

bool cmp(const pii &x,const pii &y)

intmain()

cout

}return0;

}

題解 八皇后問題

是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8 8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有76種方案。1854年在柏林的象棋雜誌上不同的作者發表了40種不同的...

8皇后問題 解法 c

可根據更改line queennumberd的值,任意更改遊戲規則 include include include define line 8 define queennumber 8 void fun int i,int j bool judge int i,int j void print vo...

HDU 2553 N皇后問題(詳細題解)

這是一道深搜題目!問題的關鍵是在剪枝。下面我們對問題進行分析 1.一行只能放乙個皇后,所以我們一旦確定此處可以放皇后,那麼該行就只能放乙個皇后,下面的就不要再搜了。2.每一列只能放乙個皇后,所以我們下次搜尋就不要再搜已經放過的皇后了。3.斜的45 線也只能放乙個。綜上如何才能最快速的確定一列和45 ...