[ONTAK2015]OR-XOR
[ONTAK2015]OR-XOR
题目大意:
一个长度为\(n(n\le5\times10^5)\)的序列\(A(0\le A_i\le10^{18})\),将其分为恰好\(m\)个连续段,设每一段的代价为这一段数字的异或和,总代价为每一段代价或和。求最小总代价。
思路:
首先求出前缀异或和,答案相当于选出\(m\)个数\(B_{1\sim m}\),使得\(\vee_{i=1}^{n}B_i\oplus B_{i-1}\)最小。其中\(B_m=A_n\),\(B_0=0\)。
从高到低按位贪心,某一位可以为\(0\),当且仅当这\(A_n\)一位为\(0\),且这一位为\(0\)的数的个数超过\(m\)。如果这一位确实可以为\(0\),那么就把这一位为\(1\)的数删掉。
源代码:
#include<cstdio>
#include<cctype>
typedef long long int64;
inline int64 getint() {
	register char ch;
	while(!isdigit(ch=getchar()));
	register int64 x=ch^'0';
	while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
	return x;
}
const int N=5e5+1;
int64 a[N];
int main() {
	const int n=getint(),m=getint();
	for(register int i=1;i<=n;i++) {
		a[i]=a[i-1]^getint();
	}
	int64 ans=0;
	for(register int i=63;i>=0;i--) {
		if(a[n]>>i&1) {
			ans|=1ll<<i;
			continue;
		}
		int cnt=0;
		for(register int j=1;j<=n;j++) {
			if(~a[j]) cnt+=!(a[j]>>i&1);
		}
		if(cnt<m) {
			ans|=1ll<<i;
			continue;
		} else {
			for(register int j=1;j<=n;j++) {
				if((~a[j])&&(a[j]>>i&1)) a[j]=-1;
			}
		}
	}
	printf("%lld\n",ans);
	return 0;
}
												
											[ONTAK2015]OR-XOR的更多相关文章
- BZOJ 4245: [ONTAK2015]OR-XOR
		
4245: [ONTAK2015]OR-XOR Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 492 Solved: 269[Submit][Sta ...
 - BZOJ4245 ONTAK2015 OR-XOR 【位运算+贪心】*
		
BZOJ4245 ONTAK2015 OR-XOR Description 给定一个长度为n的序列a[1],a[2],…,a[n],请将它划分为m段连续的区间,设第i段的费用c[i]为该段内所有数字的 ...
 - 【BZOJ4245】[ONTAK2015]OR-XOR 贪心
		
[BZOJ4245][ONTAK2015]OR-XOR Description 给定一个长度为n的序列a[1],a[2],...,a[n],请将它划分为m段连续的区间,设第i段的费用c[i]为该段内所 ...
 - [LeetCode] Maximum XOR of Two Numbers in an Array 数组中异或值最大的两个数字
		
Given a non-empty array of numbers, a0, a1, a2, … , an-1, where 0 ≤ ai < 231. Find the maximum re ...
 - 二分+DP+Trie HDOJ 5715 XOR 游戏
		
题目链接 XOR 游戏 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
 - BZOJ 2115 【Wc2011】  Xor
		
Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 ...
 - xor和gates的专杀脚本
		
前段时间的一次样本,需要给出专杀,应急中遇到的是linux中比较常见的两个家族gates和xor. 首先是xor的专杀脚本,xor样本查杀的时候需要注意的是样本的主进程和子进程相互保护(详见之前的xo ...
 - Codeforces617 E . XOR and Favorite Number(莫队算法)
		
XOR and Favorite Number time limit per test: 4 seconds memory limit per test: 256 megabytes input: s ...
 - Xor && 线性基练习
		
#include <cstdio> #include <cstring> ; ; int cnt,Ans,b,x,n; inline int Max(int x,int y) ...
 - BC之Claris and XOR
		
http://acm.hdu.edu.cn/showproblem.php?pid=5661 Claris and XOR Time Limit: 2000/1000 MS (Java/Others) ...
 
随机推荐
- FFmpeg的一般流程
			
FFMPeg一般流程: 1.av_register_all();//注册所有文件格式和编解码库 2.avformat_network_init();//打开网络视频流 3.av_open_input_ ...
 - C++ Primer 笔记——嵌套类 局部类
			
1.嵌套类是一个独立的类,与外层类基本没什么关系.特别的是,外层类的对象和嵌套类的对象是相互独立的.在嵌套类的对象中不包含任何外层类定义的成员,在外层类的对象中也不包含任何嵌套类定义的成员. 2.嵌套 ...
 - NPOI操作Excel(一)--NPOI基础
			
用C#读取Excel的方法有很多中,由于近期工作需要,需要解析的Excel含有合并单元格以及背景色等特殊要求,故在网上查了一些关于读Excel的方法的优缺点,觉得NPOI能满足我的需要,所以搜索了一些 ...
 - 论文阅读笔记三十九:Accurate Single Stage Detector Using Recurrent Rolling Convolution(RRC CVPR2017)
			
论文源址:https://arxiv.org/abs/1704.05776 开源代码:https://github.com/xiaohaoChen/rrc_detection 摘要 大多数目标检测及定 ...
 - 出现xml错误的时候都是配置文件的名字没有改造成的
			
The error may exist in com/bjpowernode/dao/PlayerDao.xml
 - Django主线
			
Django怎么学: 参考地址:https://www.zhihu.com/question/26235428 需要了解的知识点: Django Url请求流程 首要操作 Django的安装 pip3 ...
 - git tag用法
			
git tag //查看tag git tag test_tag c809ddbf83939a89659e51dc2a5fe183af384233 //在某个commit 上打tag git tag. ...
 - 原生开发小程序 和 wepy 、 mpvue, Taro 对比
			
https://blog.csdn.net/yang450712123/article/details/79623518 mpvue https://www.cnblogs.com/bgwhite/p ...
 - [转] babel-plugin-react-css-modules配置
			
自己的react项目用到了css-modules,由于不太想在写className时写style.xxx于是google解决方案,找到了这货->babel-plugin-react-css-mo ...
 - [转] react-router4 + webpack Code Splitting
			
项目升级为react-router4后,就尝试着根据官方文档进行代码分割.https://reacttraining.com/react-router/web/guides/code-splittin ...