ZJOI2008 泡泡堂題解

2021-10-08 06:12:02 字數 2159 閱讀 1554

一道博弈論貪心題:

**如下

213

24

2 0
6

10000000

10000000

10000000

10000000

10000000

1000000000

0000

12 12
我們分別稱 4 位選手為 a,b,c,d 。則可能出現以下 4 種對戰方式,最好情況下可得 2 分,最壞情況下得 0 分。 浙江

???結果

浙江???

結果浙江

???結果

浙江???

結果一號ab

負ad負

bc勝b

d負二號b

d負bc

勝ad負

ac負得分

0220

對手都是認真學習的好孩子,不會打遊戲。無論如何排列出場順序都無法改變被蹂躪的結果。浙江隊總能取得全勝的結果。

我方最小的 ≮

\not<

​<

\not=

​=>

>

>

他方最小的

if

(a[h]

>b[l]

)

我方最大的 ≮

\not<

​<

\not=

​=>

>

>

他方最大的

else

if(a[t]

>b[r]

)

我方最小的 ≮

\not<

​<

=

==≯

\not>

​>

他方最大的

else

while

(h<=t&&l<=r)

else

if(a[t]

>b[r]

)else

}

#include

#define maxn 1000039

#define ll long long

#define fori for(register int i=1;i<=n;i++)

#define forj for(register int j=1;j<=n;j++)

#define fork for(register int k=1;k<=n;k++)

int a[maxn]

,b[maxn]

;int n;

int h,t,l,r;

long

long ans;

inline

void

read

(int

&x)while

(s>=

'0'&&s<=

'9') x=

(x<<3)

+(x<<1)

+(s^48)

,s=getchar()

; x*

=f;}

inline

long

long

game

(int a,

int b)

else

if(a[t]

>b[r]

)else

}return ans;

}int

main()

fori

std::

sort

(a+1

,a+1

+n);

std::

sort

(b+1

,b+1

+n);

printf

("%d "

,game

(a,b));

printf

("%d",2

*n-game

(b,a));

return0;

}

ZJOI2008 泡泡堂BNB 貪心

題意 傳送門 題解 算浙江省最多贏多少分,用田忌賽馬,算浙江省最少得多少分,另一方用田忌賽馬,然後用2 n ans即可,關於田忌賽馬這個貪心還是挺多坑的,想了很多才算過了。首先我們考慮的是我要贏更多,那麼我盡量虧對方,如果我的最快的馬比他的最快的馬快,那麼直接兩個最快的馬賽一場,肯定啊,我用最快的馬...

1034 ZJOI2008 泡泡堂 貪心

第 x屆noi期間,為了加強各省選手之間的交流,組委會決定組織一場省際電子競技大賽,每乙個省的代表 隊由n名選手組成,比賽的專案是老少咸宜的網路遊戲泡泡堂。每一場比賽前,對陣雙方的教練向組委會提交乙份 參賽選手的名單,決定了選手上場的順序,一經確定,不得修改。比賽中,雙方的一號選手,二號選手 n號 ...

洛谷P2587 ZJOI2008 泡泡堂 題解

題目傳送門 題目大意 不知道怎麼能夠表述的更簡潔一些。思考過程 具體做法 模擬田忌賽馬,策略是 1.將我方最菜的和敵方最菜的比較,如果我方的比較厲害就 2.將我方最強的和地方最強的比較,如果我方的比較厲害就 3.用我方最菜的換掉地方最強的 上述三條按序號來優先執行,策略正確性不會證2333 incl...