一道博弈論貪心題:
**如下
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...