【题解】 Codeforces 662A Gambling Nim (线性基)
Solution:
- 我们先取\(ans=a[1] \bigoplus a[2] \bigoplus ... \bigoplus a[n]\),然后我们定义\(c[i]=a[i] \bigoplus b[i]\),我们就可以知道每异或一个\(c[i]\),就是更换选取\(a[i],b[i]\),这里很好想。
 - 然后我们要处理出\(c[i]\),中有多少子集异或和为\(ans\),这样异或出来总和为\(0\),这个我们就可以用线性基了。
 - 然后后面求子集我还是没有太弄懂,看了题解也有点蒙,先留一个坑
 - 题解
 
Code:
//It is coded by Ning_Mew on 5.31
#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int maxn=5e5+7;
int n,tot=0;
LL a[maxn],b[maxn],c[maxn],x[maxn],ans=0;
bool push(LL s){
  for(int i=63;i>=0;i--){
    if((s>>i)&1){
      if(x[i]){s=s^x[i];}
      else {x[i]=s;return true;}
    }
  }return false;
}
LL q_pow(LL xx,LL t){
  LL re=1;
  while(t){
    if(t%2){re=re*xx;}
    xx=xx*xx;t=t/2;
  }return re;
}
int main(){
  scanf("%d",&n);
  for(int i=1;i<=n;i++){
    scanf("%I64d%I64d",&a[i],&b[i]);
    c[i]=a[i]^b[i];ans^=a[i];
  }
  for(int i=1;i<=n;i++){
    if(push(c[i]))tot++;
  }
  if(push(ans)){printf("1/1\n");return 0;}
  else{
    printf("%I64d/%I64d\n",q_pow(2,tot)-1,q_pow(2,tot));
  }
  return 0;
}
博主蒟蒻,随意转载。但必须附上原文链接:http://www.cnblogs.com/Ning-Mew/,否则你会终生找不到妹子!!!
【题解】 Codeforces 662A Gambling Nim (线性基)的更多相关文章
- 【CF662A】Gambling Nim 线性基
		
[CF662A]Gambling Nim 题意:n长卡牌,第i张卡牌正面的数字是$a_i$,反面的数字是$b_i$,每张卡牌等概率为正面朝上或反面朝上.现在Alice和Bob要用每张卡牌朝上的数字玩N ...
 - CodeForces - 662A Gambling Nim
		
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
 - Codeforces 1163E Magical Permutation [线性基,构造]
		
codeforces 思路 我顺着图论的标签点进去的,却没想到-- 可以发现排列内每一个数都是集合里的数异或出来的. 考虑答案的上界是多少.如果能用小于\(2^k\)的数构造出\([0,2^k-1]\ ...
 - 【题解】P4570 [BJWC2011]元素 - 线性基 - 贪心
		
P4570 [BJWC2011]元素 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 给你 \(n\) 个二元组 \( ...
 - CodeForces - 587E[线段树+线性基+差分]  ->(线段树维护区间合并线性基)
		
题意:给你一个数组,有两种操作,一种区间xor一个值,一个是查询区间xor的结果的种类数 做法一:对于一个给定的区间,我们可以通过求解线性基的方式求出结果的种类数,而现在只不过将其放在线树上维护区间线 ...
 - 【bzoj3105】[cqoi2013]新Nim游戏  高斯消元求线性基
		
题目描述 传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同).两个游戏者轮流操作,每次可以选一个火柴堆拿走若干根火柴.可以只拿一根,也可以拿走整堆火柴,但不能同时从 ...
 - 【BZOJ4004】装备购买(线性基)
		
[BZOJ4004]装备购买(线性基) 题面 BZOJ 洛谷 Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am ...
 - 【BZOJ2115】[Wc2011] Xor 高斯消元求线性基+DFS
		
[BZOJ2115][Wc2011] Xor Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ...
 - 【bzoj4269】再见Xor  高斯消元求线性基
		
题目描述 给定N个数,你可以在这些数中任意选一些数出来,每个数可以选任意多次,试求出你能选出的数的异或和的最大值和严格次大值. 输入 第一行一个正整数N. 接下来一行N个非负整数. 输出 一行,包含两 ...
 
随机推荐
- VBA 连接,提醒 rs AS new adodb.recordset 的变量未定义
			
解决方法: 菜单-工程-引用Microsoft ActiveX Data Objects 2.x Library 定位……msado15.dll
 - 番外篇:因为一个固态导致的——系统重装与JAVA软件环境下载安装配置
			
第一步:拆机改装 最近想换个固态硬盘提提速度,就买了个,然后拧下后盖螺丝,将键盘盖拿下,中间有两个根线连着把扣打开就可以了,将新的固态硬盘装到原本的机械硬盘的地方,又买了个光驱托盘改装位将光驱位装上了 ...
 - MSTECHLNK
			
MSTECHLNK(微软技术直通车) 时间:2017.12.16地点:微软中关村办公楼天安门会议室
 - Hiberante持久化对象的3种状态
			
近日一同事问我关于Hibernate中对象的3种状态的问题,因此特意总结一下.在Hibernate中对象是有以下3中状态: 瞬时态(transient object): 没有OID值,没有被s ...
 - 汇编 push ,pop指令
			
知识点:  PUSH  POP  CALL堆栈平衡  RETN指令 一.PUSH入栈指令 (压栈指令): 格式: PUSH 操作数 //sub esp,4 ;mov [esp],EBP 操作数 ...
 - 初识TPOT:一个基于Python的自动化机器学习开发工具
			
1. TPOT介绍 一般来讲,创建一个机器学习模型需要经历以下几步: 数据预处理 特征工程 模型选择 超参数调整 模型保存 本文介绍一个基于遗传算法的快速模型选择及调参的方法,TPOT:一种基于Pyt ...
 - java 读写ini配置文件
			
ini配置文件 ;客户端配置[Client];客户端版本号version=0001;设备号devNum=6405 public final class ConfigurationFile { /** ...
 - HDU 6333 Harvest of Apples (分块、数论)
			
题目连接:Harvest of Apples 题意:给出一个n和m,求C(0,n)+C(1,n)+.....+C(m,n).(样例组数为1e5) 题解:首先先把阶乘和逆元预处理出来,这样就可O(1)将 ...
 - banner 跟随鼠标呈现视差效果
			
参考 Element 官网,利用 js / jq 和 css3, 实现某图片随着鼠标移动呈现的视差效果. <!DOCTYPE html> <html> <head> ...
 - .NetCore利用BlockingCollection实现简易消息队列
			
前言 消息队列现今的应用场景越来越大,常用的有RabbmitMQ和KafKa. 我们用BlockingCollection来实现简单的消息队列. 实现消息队列 用Vs2017创建一个控制台应用程序.创 ...