傳送門
首先造成不遞增,必定是存在乙個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。...