BZOJ 4245 ONTAK2015 OR-XOR
2015-08-20 15:05
477 查看
题目大意:给定一个长度为nn的序列,要求分成mm段,使得每段异或和的或值最小
求出前缀异或和后从大到小按位确定,如果某一位上有至少mm个数是0且第nn个数是0,那么这一位就可以是0,同时将所有是1的数字标记为不可选
时间复杂度O(nlogai)(nloga_i)
求出前缀异或和后从大到小按位确定,如果某一位上有至少mm个数是0且第nn个数是0,那么这一位就可以是0,同时将所有是1的数字标记为不可选
时间复杂度O(nlogai)(nloga_i)
[code]#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define M 500500 using namespace std; int n,m; long long a[M],ans; bool v[M]; int main() { int i; long long j; cin>>n>>m; for(i=1;i<=n;i++) scanf("%lld",&a[i]),a[i]^=a[i-1]; for(j=1ll<<62;j;j>>=1) { int cnt=0; for(i=1;i<=n;i++) if( !v[i] && ~a[i]&j ) ++cnt; if( cnt>=m && ~a &j ) { for(i=1;i<=n;i++) if(a[i]&j) v[i]=true; } else ans|=j; } cout<<ans<<endl; }
相关文章推荐
- Ext-进度条
- VS2013使用EF6与mysql数据库
- 性能测试问题_tomcat占用内存很高,响应速度很慢
- Android:BroadcastReceiver的基础知识
- Scala 深入浅出实战经典 第61讲:Scala中隐式参数与隐式转换的联合使用实战详解及其在Spark中的应用源码解析
- Maven学习总结(七)——eclipse中使用Maven创建Web项目
- Swift学习笔记(八)属性
- VIM?给你一张图,玩去吧!!
- poj1860(bellman ford 算法)
- C/C++常用字符类型char、CSting、string转化
- 《C专家编程》阅读笔记
- hdu 4135
- js判断为空Null与字符串为空简写方法
- iOS tcpdump抓包方法
- 基于比较与非比较的排序算法
- ASP.NET学习笔记01
- [转]JSP中常见的Tomcat报错错误解析(二)
- Java之观察者模式(Observer Pattern)
- Ubuntu 下安装 WireShark
- Android Icon的尺寸要求