洛谷P2649 遊戲預言(思維 )

2021-10-04 15:00:28 字數 1088 閱讀 8260

原題鏈結

其實這題我是過了才去想我演算法的可行性的(過的一臉懵逼)

我把所有牌分為兩部分,一部分是john(a)的一部分是對手的(b)

然後兩個sort 從後往前遍歷 看是否john必勝必勝的條件:對手最大牌也不能來壓john的牌

可能輸的條件:對手最大牌用於壓john此牌,當然我們會想到一些細節問題,就是每輪對手出

m張牌而john只出1張,怎麼能一對一的實現呢?

簡單證明如下:

其實對手牌有n*(m-1)張,我們從後往前如果選擇了最大一張來壓john則再選擇m-1張最小的來出

最後這很多的m-1張是不會被遍歷到的

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

#define ll long long

inline ll read()

while

(ch >=

'0'&& ch <=

'9')

return k * f;

}ll a[

1005];

ll vis[

1005];

ll b[

1005];

intmain()

sort

(a,a+n)

; ll num=0;

for(

int i=

1;i<=n*m;i++)}

sort

(b,b+num)

; ll p=n-1;

ll d=num-1;

ll ans=0;

while

(d>=

0&&p>=0)

else d--

,p--;}

cout<'\n'

;}

洛谷P4161 遊戲

給出 n 令 nxt x 表示 x 對應的數字。一開始有乙個 1 sim n 的遞增排列,每次數字 x 會變成 nxt x 如此反覆直到該序列再次變回 1 sim n 的遞增排列。設迴圈了 k 次,你需要求出在 nxt 各不相同的情況下,k 有多少種取值。也就是說 nxt 有 n 種方案,對於每一種...

洛谷 p2241 統計方形(思維)

求乙個n m的棋盤格上有多少個不同的正方形,多少個不同的長方形。用兩個for來模擬矩形的兩個邊,看這個矩形能在該棋盤格上擺出多少個不同的位置即可,如果矩形邊長相同則結果加到正方形上,反之則加到長方形上。include using namespace std define int long long ...

洛谷 P1057 傳球遊戲

題目描述 上體育課的時候,小蠻的老師經常帶著同學們一起做遊戲。這次,老師帶著同學們一起做傳球遊戲。遊戲規則是這樣的 n個同學站成乙個圓圈,其中的乙個同學手裡拿著乙個球,當老師吹哨子時開始傳球,每個同學可以把球傳給自己左右的兩個同學中的乙個 左右任意 當老師在此吹哨子時,傳球停止,此時,拿著球沒有傳出...