CF1457 D XOR gun 猜結論題

2021-10-11 01:39:23 字數 959 閱讀 2334

傳送門

首先造成不遞增,必定是存在乙個i

ii為中介點

有[ l,

i]

[l,i]

[l,i

]的異或大於[i+

1,r]

[i+1,r]

[i+1,r

]的異或

但這麼去列舉t

tt上天

但是發現如果相鄰三個數最高位一相同

那麼後兩個數的異或值一定比前面小

而這些數字只有30

3030

位二進位制,所以當n

>

60n>60

n>60

直接輸出1

11就好了…

太菜了害…

#include

using

namespace std;

const

int maxn =

2e5+10;

int n,a[maxn]

,b[maxn]

;int

main()

for(

int i=

1;i<=n;i++

) cin >> a[i]

,b[i]

= a[i]

^b[i-1]

;int ans =

1e9;

for(

int i=

1;i<=n;i++

)for

(int j=

0;j<=

60&&i-j>=

1;j++

)//列舉長度

for(

int k=

0;k<=

60&&i+

1+k<=n;k++)if

( ans==

1e9) ans =-1

; cout << ans;

}

1457 棋盤遊戲

time limit 5 sec memory limit 64 mb submit 327 solved 185 submit status discuss 有乙個100 100的棋盤,其中左下角的編號為 0,0 右上角編號為 99,99 棋盤上有n個queen,最開始第i個queen的位置為 x...

1457 最值交換

有乙個長度為n的整數序列。請寫乙個程式,先把序列中的最小值與第乙個數交換,再把最大值與最後乙個數交換。輸出轉換好的序列。分別編寫兩個函式minindex 和maxindex 來計算最小值下標和最大值下標。int minindex int a,int n 函式返回陣列a中最小元素的下標 int max...

bzoj1457 棋盤遊戲

有乙個100 100的棋盤,其中左下角的編號為 0,0 右上角編號為 99,99 棋盤上有n個queen,最開始第i個queen的位置為 xi,yi 現在有兩個玩家依次來操作,每一次乙個玩家可以選擇其中乙個queen,將它跳到 xi k,yi 或 xi,yi k 或 xi k,yi k 其中k 0。...