1. 程式人生 > >BZOJ3105 新Nim遊戲 【擬陣】

BZOJ3105 新Nim遊戲 【擬陣】

code include max ans 線性 pan bsp spa tin

題目分析:

我不知道啥是擬陣啊,但有大佬說線性基相關的都是擬陣,所以直接貪心做了。

題目代碼:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 const int maxn = 120;
 5 
 6 int n;
 7 int a[maxn];
 8 int bas[maxn];
 9 
10 void read(){
11     scanf("%d",&n);
12     for(int i=1;i<=n;i++) scanf("%d",&a[i]);
13     sort(a+1,a+n+1
); 14 } 15 16 void work(){ 17 long long ans = 0; 18 for(int i=n;i>=1;i--){ 19 int dt = a[i]; 20 for(int j=30;j>=0;j--){ 21 if(!(a[i] & (1<<j)))continue; 22 if(bas[j] == 0){bas[j] = a[i];break;} 23 else a[i] ^= bas[j]; 24 }
25 if(a[i] == 0) ans += dt; 26 } 27 printf("%lld\n",ans); 28 } 29 30 int main(){ 31 read(); 32 work(); 33 return 0; 34 }

BZOJ3105 新Nim遊戲 【擬陣】