BZOJ 3105: [cqoi2013]新Nim游戏(线性基)
解题思路
$nim$游戏先手必胜的条件是异或和不为$0$,也就是说第一个人拿走了若干堆后不管第二个人怎么拿都不能将剩余堆的异或和变成$0$。考虑线性基,其实就是每个数对线性基都有贡献,任何一个数不会被线性表出,要使拿走元素最少,考虑贪心,将所有数字从大到小依次尝试插入线性基,插入失败就累计到答案。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=105;
typedef long long LL;
int b[35],a[N],k;
LL ans;
inline bool cmp(int x,int y){
	return x>y;
}
inline void Insert(int x){
	int pre=x;
	for(int i=30;~i;i--)
		if(x&(1<<i)) {
			if(!b[i]) {b[i]=x;return;}
			x^=b[i];
		}
	ans+=pre;
}
int main(){
	scanf("%d",&k);
	for(int i=1;i<=k;i++) scanf("%d",&a[i]);
	sort(a+1,a+1+k,cmp);
	for(int i=1;i<=k;i++) Insert(a[i]);
	printf("%lld\n",ans);
	return 0;
}
												
											BZOJ 3105: [cqoi2013]新Nim游戏(线性基)的更多相关文章
- BZOJ 3105 [CQOI2013]新Nim游戏 ——线性基
		
[题目分析] 神奇的题目,两人都可以第一次取走足够多堆的石子. nim游戏的规则是,如果异或和为0,那么就先手必输,否则先手有必胜策略. 所以只需要剩下一群异或和为0就可以了. 先排序,线性基扫一遍即 ...
 - BZOJ.3105.[CQOI2013]新Nim游戏(线性基 贪心 博弈论)
		
题目链接 如果后手想要胜利,那么在后手第一次取完石子后 可以使石子数异或和为0.那所有数异或和为0的线性基长啥样呢,不知道.. 往前想,后手可以取走某些石子使得剩下石子异或和为0,那不就是存在异或和为 ...
 - bzoj 3105: [cqoi2013]新Nim游戏 异或高消 && 拟阵
		
3105: [cqoi2013]新Nim游戏 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 535 Solved: 317[Submit][Stat ...
 - bzoj 3105: [cqoi2013]新Nim游戏【线性基+贪心】
		
nim游戏的先手必胜条件是所有堆的火柴个数异或和为0,也就是找一个剩下火柴堆数没有异或和为0的子集的方案,且这个方案保证剩下的火柴个数总和最大 然后我就不会了,其实我到现在也不知道拟阵是个什么玩意-- ...
 - BZOJ 3105: [cqoi2013]新Nim游戏 [高斯消元XOR 线性基]
		
以后我也要用传送门! 题意:一些数,选择一个权值最大的异或和不为0的集合 终于有点明白线性基是什么了...等会再整理 求一个权值最大的线性无关子集 线性无关子集满足拟阵的性质,贪心选择权值最大的,用高 ...
 - BZOJ3105:[CQOI2013]新Nim游戏(线性基,贪心)
		
Description 传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同).两个游戏者轮流操作,每次可以选一个火柴堆拿走若干根火柴.可以只拿一根,也可以拿走整堆火柴 ...
 - [CQOI2013]新Nim游戏  线性基
		
题面 题面 题解 首先我们知道nim游戏先手必败当且仅当所有石堆异或和为0,因此我们的目标就是要使对手拿石堆的时候,无论如何都不能使剩下的石堆异或和为0. 对于一个局面,如果我们可以选取一些可以凑出0 ...
 - 洛谷$P$4301 $[CQOI2013]$新$Nim$游戏 线性基+博弈论
		
正解:线性基 解题报告: 传送门! 这题其实就是个博弈论+线性基,,,而且博弈论还是最最基础的那个结论,然后线性基也是最最基础的那个板子$QwQ$ 首先做这题的话需要一点点儿博弈论的小技能,,,这题的 ...
 - BZOJ 3105: [cqoi2013]新Nim游戏
		
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3105 题意是要取一些数使得剩余的数xor和的子集不为0 拟阵.求解极大线性无关组.贪心从大到小 ...
 
随机推荐
- unicode字符集范围
			
引言 unicode是全世界统一的编码规则,但只规定了各种字符的数字编码(官网:www.unicode.org),具体实现的存储方式有utff-8,utf-16,utf-32等形式,各种形 ...
 - 【靶场练习_sqli-labs】SQLi-LABS Page-1(Basic Challenges)
			
GET篇 Less-1: 1.用order by得出待查表里有三个字段 http://192.168.40.165/sqli-labs-master/Less-1/?id=1' order by 3 ...
 - Jmeter 5.1 从excel读取数据执行接口自动化
			
思路:数据在excel文件中进行维护,然后转换成csv格式,jme中读取数据执行: 1.将接口各数据在excel文件中进行维护,然后存为csv格式,我的数据如下: 2.jmeter脚本,配置csv文件 ...
 - Asp.Net Core 第03局:Startup
			
总目录 前言 本文介绍Startup,它主要用于配置应用使用的服务和应用的请求管道. 环境 1.Visual Studio 2017 2.Asp.Net Core 2.2 开局 第一手:Startup ...
 - 封装token
			
let baseApiUrl = 'xxxx' var app = getApp(); let defaultHeaders = { 'Content-Type': 'application/json ...
 - 【Unity3D NGUI】----UI尺寸和位置的调整
			
1 尺寸与位置 通过UIWidget类获取,该类是所有UI元素的基类 在unity中创建一个sprite,如下图所示 这里面这个sprite的大小受几个属性的影响,首先是属性面板里的Size,对应的U ...
 - upc组队赛16 WTMGB【模拟】
			
WTMGB 题目链接 题目描述 YellowStar is very happy that the FZU Code Carnival is about to begin except that he ...
 - idea配置svn正确步骤(下载svn的过程就不写了)
			
打开----->File------>Settings 2. 3在vcs中选择 4进入此界面 5选择 这样svn就配置好了
 - 用MR生成HFile文件格式后,数据批量导入HBase
			
环境hadoop cdh5.4.7 hbase1.0.0 测试数据: topsid uid roler_num typ 10 111111 255 0 在Hbase 创建t2数据库: create ...
 - PostgreSQL 荣获 2019 年 O'Reilly 终身成就奖
			
Java技术栈 www.javastack.cn 优秀的Java技术公众号 来自:开源中国社区 https://www.oschina.net/news/108436/pg-wins-2019-ore ...