博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
4245: [ONTAK2015]OR-XOR
阅读量:4599 次
发布时间:2019-06-09

本文共 1043 字,大约阅读时间需要 3 分钟。

4245: [ONTAK2015]OR-XOR

 

 

1 /* 2 要求分成m份,总价值为a1|a2|a3...,总价值最小,ai为第i份的异或和。 3   4 首先预处理异或和。  5 根据贪心的思想,高位最好是0。 6 于是从高位往低位枚举,看一下每一位是否可以为0。 7 如果当前这一位可以为0,每一份的(异或和)(或)起来都是0,所以每一份异或和的这一位不能有1 8 那么一个点可以成为分割点当且仅当这个点的sum值的这一位为0,然后统计有多少个点的sum为0 9 如果个数>=m且这一位上的所有1为偶数个(sum[n]&(1LL<
14 using namespace std;15 typedef long long LL;16 17 inline LL read() {18 LL x=0,f=1;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-1;19 for (;isdigit(ch);ch=getchar())x=x*10+ch-'0';return x*f;20 }21 22 const int N = 500100;23 LL a[N],sum[N],flag[N];24 25 int main() {26 int n,m;cin >> n >> m;27 for (int i=1; i<=n; ++i) 28 a[i] = read(),sum[i] = sum[i-1] ^ a[i];29 LL ans = 0; 30 for (int i=62; i>=0; --i) { // 看第i位能否为0 31 int cnt = 0;32 for (int j=1; j<=n; ++j) { // 统计有多少个右端点满足条件 33 if (!flag[j] && (sum[j]&(1LL<
= m && (sum[n]&(1LL<
<< i);40 }41 cout << ans;42 return 0;43 }

 

转载于:https://www.cnblogs.com/mjtcn/p/9756211.html

你可能感兴趣的文章
How to lisp Lisp output a paragraph"500 Tph Dry Process Cement Plant Machinery Manufacturers"
查看>>
更改chrome浏览器css背景为护眼色,更改字体为微软雅黑。
查看>>
Unix系统编程()文件描述符和打开文件之间的关系
查看>>
ASP.NET AJAX Calling Web Service
查看>>
Connecting Windows Mobile device emulators to the Internet without ActiveSync
查看>>
英文词频统计说明
查看>>
C++的new、delete需要注意的一点:使用危险函数导致的越界
查看>>
js执行过程
查看>>
Laravel5.1学习笔记15 数据库1 数据库使用入门
查看>>
nodejs express搭建一个网站整理
查看>>
POJ 2373 Dividing the Path(DP + 单调队列)
查看>>
(转)3ds Max 和 Away3D工作流程
查看>>
STL: distance, unique
查看>>
[Markdown] 03 进阶语法 第一弹
查看>>
使用HashMap编写一程序实现存储某班级学生信息
查看>>
Mvc多级Views目录 asp.net mvc4 路由重写及 修改view 的寻找视图的规则
查看>>
spring整合redis
查看>>
GitLab Runner and CICD
查看>>
【XSY2721】求和 杜教筛
查看>>
常见的SQL优化面试题
查看>>