Codeforces Round #439 A The Artful Expedient 博弈解釋 +暴力寫法
阿新 • • 發佈:2019-01-27
畢竟是 A 題,直接兩重迴圈就可以暴力過去。。
按博弈想的話就是 : ai ^ aj = ak 的話,那麼可以推出 : ai ^ ak = aj 和 aj ^ ak = ai ;
沒有重複的元素,如果能在已有集合中找到一個 ai ^ bj 滿足條件的話,那這個異或後的數(假設為 c ) 也會有 (ai ^ c = bj )或者 (bj ^ c = ai) ,兩種情況中的一種,
也就是說符合情況的兩個數異或然後結果肯定是成對出現的 所以答案一定是 Karen 贏
暴力寫法如下:
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <string> #include <cmath> #include <set> #include <map> #include <stack> #include <queue> #include <ctype.h> #include <vector> #include <algorithm> #include <sstream> #define PI acos(-1.0) #define in freopen("in.txt", "r", stdin) #define out freopen("out.txt", "w", stdout) using namespace std; typedef long long ll; const int maxn = 20000000 + 7, INF = 0x7f7f7f7f, mod = 1e9 + 7; int n; int vis[maxn] = {0}, a[2222], b[2222]; int main() { //cout << (3^2) << endl; scanf("%d", &n); int cnt = 0; for(int i = 0; i < n; ++i) { scanf("%d", &a[i]); vis[a[i]] = 1; } for(int i = 0 ; i < n; ++i) { scanf("%d", &b[i]); vis[b[i]] = 1; } for(int i = 0; i < n; ++i) { for(int j = 0; j < n; ++j) { if(vis[(a[i]^b[j])]) cnt++; } } if(cnt % 2 == 0) puts("Karen"); else puts("Koyomi"); return 0; }