小q和tangjz正在乙個長度為n的序列a_1,a_2,…,a_n上玩乙個有趣的關於區間翻轉的遊戲。小q和tangjz輪流行動,小q先手。每次行動方玩家需要選擇乙個長度為4x+2或4x+3的區間l,r,其中x是該玩家自行選擇的非負整數,然後將a_l,a_,…,a_,a_r翻轉,例如1 3 2 5 4翻轉會得到4 5 2 3 1。為了防止遊戲無
限進行下去,他們規定每次操作之後得到的新序列的字典序必須比操作前的序列大。最先不能採取任何行動的玩家將會輸掉這局遊戲。假設小q和tangjz都會採取最優策略行動,請寫乙個程式判斷誰會獲得這局遊戲的勝利。
n<=50
顯然每一次翻轉都會使該區間的順序對數和逆序對數交換,注意到滿足條件的區間的逆序對數加順序對數一定為奇數,因為結果狀態n,n-1,..,1的順序對數為偶數,所以若初始狀態順序對於為偶數則先手必敗,反之則先手比勝。
#include
#include
#include
#include
#include
using
namespace
std;
int n,a[55];
int main()
bzoj 4975 區間翻轉(博弈)
time limit 1 sec memory limit 256 mb submit 176 solved 81 submit status discuss 小q和tangjz正在乙個長度為n的序列a 1,a 2,a n上玩乙個有趣的關於區間翻轉的遊戲。小q和tangjz輪流行動,小q先手。每次行...
博弈 逆序對 BZOJ4975 區間翻轉
小q和tangjz正在乙個長度為n的序列 a1,a2,a na 1,a 2,a n a1 a2 an 上玩乙個有趣的關於區間翻轉的遊戲。小q和tangjz輪流行動,小q先手。每次行動方玩家需要選擇乙個長度為 4x 24x 2 4x 2 或 4x 3 4x 3 4x 3 的區間 l,r 1 l r n...
4975 區間翻轉
小q和tangjz正在乙個長度為n的序列a 1,a 2,a n上玩乙個有趣的關於區間翻轉的遊戲。小q和tangjz輪流行動 小q先手。每次行動方玩家需要選擇乙個長度為4x 2或4x 3的區間 l,r 1 l r n 其中x是該玩家自行選擇 的非負整數,然後將a l,a a a r翻轉,例如1 3 2...