Codeforces 662A 思路巧妙的異或

2022-05-07 03:30:10 字數 1707 閱讀 6709

題意:給你\(n\)堆石子玩尼姆博弈,每堆石子可以是\(a_i\)也可以是\(b_i\),選擇概率相等且每堆選擇相互獨立,求先手必勝(異或不為0)的概率

首先需要找出一種優雅的策略表示方法(利用異或的思想)

我們需要處理的是\(c_i=a_i \ xor \ b_i\)的線性基,然後用\(s\)代表\(a_i\)的整體異或,那麼$s \ xor \ \((\)c_i\(的任意組合)即可表示原問題的選擇策略

那麼原問題首先轉換為\)c_i\(是否可以湊出\)s$

剩下的我在**中已經注釋

ps.窩的天cf才a題就這麼可怕的嗎

#include#include#include#include#include#include#include#include#include#include#include#include#include#define rep(i,j,k) for(register int i=j;i<=k;i++)

#define rrep(i,j,k) for(register int i=j;i>=k;i--)

#define erep(i,u) for(register int i=head[u];~i;i=nxt[i])

#define iin(a) scanf("%d",&a)

#define lin(a) scanf("%lld",&a)

#define din(a) scanf("%lf",&a)

#define s0(a) scanf("%s",a)

#define s1(a) scanf("%s",a+1)

#define print(a) printf("%lld",(ll)a)

#define enter putchar('\n')

#define blank putchar(' ')

#define println(a) printf("%lld\n",(ll)a)

#define ios ios::sync_with_stdio(0)

using namespace std;

const int maxn = 5e5+11;

const double eps = 1e-7;

typedef long long ll;

typedef unsigned long long ull;

const ll mod = 10086;

unsigned int seed = 17;

const ll inf = 1ll<<60;

ll read()

while(ch>='0'&&ch<='9')

return x*f;

}ll b[66];

int cal(int n,ll a)}}

}rep(i,0,62) if(b[i]) cnt++;

return cnt;

}ll a[maxn],b[maxn],c[maxn],n;

int main()

ll s=0;

rep(i,1,n) s^=a[i],c[i]=a[i]^b[i];

int cnt=cal(n,c);

rep(i,0,62) if(s>>i&1) s^=b[i];

//注意如果i位沒有別瞎異或,相當於構造時的插入但不更新的操作

printf("1/1\n");

}else

}return 0;

}

6 6 2 赫夫曼編碼

typedef struct htnode,huffmancode typedef char huffmancode 求報文赫夫曼編碼的演算法 void huffmancoding huffmantree ht,huffmancode hc,int w,int n m 2 n 1 0號單元棄用 ht...

6 6 2 婚姻資訊

婚姻資訊主要是描述資訊主體的婚姻狀況 配偶的身份標識 工作單位 等資訊 婚姻資訊資料塊由婚姻資訊單元構成,該資訊單元直接由資料項構成,見表 6 10 表 6 10 婚姻資訊單元所含資料項 資料項名稱 資料項描述 資料型別 婚姻狀況 反映資訊主體婚姻狀況的 表參照國標 個人基本資訊分類與 第 2 部分...

elasticsearch6 6 2 建立使用者

生成金鑰 複製 data escluster esmaster config es gpdi.p12 檔案到各節點config目錄下 在每個節點配置中新增如下內容 data escluster esmaster config elasticsearch.yml xpack.security.tran...