問題 B Cly的博弈

2021-10-12 02:58:05 字數 806 閱讀 4300

第一行查詢數字q (1<=q<=1e5)

接下來q行每行輸入乙個數字n (1<=n<=1e5)

對於每次查詢如果先手勝,輸出clynb,否則輸出dd_bondnb

最後輸出乙個和sum。

【樣例1輸入】11

【樣例2輸入】12

【樣例1輸出】

dd_bondnb

0【樣例2輸出】

clynb

1一道博弈題,可以發現如果n為偶數的話,就一定可以出1使其變成奇數,而n為奇數的話,找到的只可能是奇數(奇數不可能整除偶數),相減後就會變成偶數。

總結一下,就是偶數可以變成奇數,奇數只能變成偶數。操作完之後為1的話對方就輸了,所以誰能最後將偶數變為奇數(2變為1),就是贏家。因此可以推算出先手情況下n為偶數必贏,只要找到乙個奇數因子即可,題目中要求能選擇的最大值,那就找最大值即可,(這裡有個坑點,找最大奇數因子如果從1道n迴圈會超時,不斷將n除以2到無法整除即可)

**:

#include

using namespace std;

const

int n =

1e5+10;

int a[n]

;int

main()

for(

int i =

1; i <= q; i++

) sum +

= k;

}else

}printf

("%d"

, sum)

;return0;

}

紙牌博弈問題

題目 有乙個整型陣列a,代表數值不同的紙牌排成一條線。玩家a和玩家b依次拿走每張紙牌,規定玩家a先拿,玩家b後拿,但是每個玩家每次只能拿走最左或最右的紙牌,玩家a和玩家b都絕頂聰明,他們總會採用最優策略。請返回最後獲勝者的分數。給定紙牌序列a及序列的大小n,請返回最後分數較高者得分數 相同則返回任意...

紙牌博弈問題

題目 有乙個整型陣列a,代表數值不同的紙牌排成一條線。玩家a和玩家b依次拿走每張紙牌,規定玩家a先拿,玩家b後拿,但是每個玩家每次只能拿走最左或最右的紙牌,玩家a和玩家b都絕頂聰明,他們總會採用最優策略。請返回最後獲勝者的分數。給定紙牌序列a及序列的大小n,請返回最後分數較高者得分數 相同則返回任意...

基礎博弈問題

time limit 1000 ms memory limit 65536 kib submit statistic problem description guns和roses是兩個好朋友,這一天他們比賽吃葡萄。假定他們有ans顆葡萄。在比賽之前他們會首先確定每次吃葡萄的數量的最大值為s,和ans...