Link:

Codeforces 1053B 传送门

Solution:

其实就是暴力

观察需要满足的条件:

1、个数和为偶数

2、最大个数不大于其它所有个数的和

如果只有第一个条件记录前缀和的奇偶性即可,接下来考虑去除不符合第二个条件的区间

由于一个数最大有60个1且每个数至少有1个1,因此只要暴力查询区间长度小于60的区间即可

Code:

#include <bits/stdc++.h>

using namespace std;
#define X first
#define Y second
#define pb push_back
typedef double db;
typedef long long ll;
typedef pair<int,int> P;
const int MAXN=5e5+;
ll n,x,cnt[MAXN],pre[MAXN],odd,even,res; int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%lld",&x);
while(x) cnt[i]+=x&,x>>=;
}
for(int i=;i<=n;i++)
pre[i]=pre[i-]+cnt[i]; for(int i=;i<=n;i++)
{
if(pre[i]%==)
res+=even+,even++;
else res+=odd,odd++;
res-=(pre[i]%==pre[i-]%);
}
for(int i=;i<=n;i++)
{
ll sum=cnt[i],mx=cnt[i];
for(int j=i-;j>=&&j>=i-;j--)
{
sum+=cnt[j];mx=max(cnt[j],mx);
if(mx>sum-mx&&sum%==) res--;
}
}
printf("%lld",res);
return ;
}

最新文章

  1. XCode6.3上使用opencv教程(MacOSX 10.10)
  2. CentOS 一键搭建pptpd
  3. GD图片(画布)的制作及验证码的应用
  4. C#中的BackgroundWorker控件+Delegate.Invoke (委托同步调用)
  5. Android ThreadUtil 线程公共类,判断是否在主线程/ 子线程执行 相关操作
  6. UESTC 900 方老师炸弹 --Tarjan求割点及删点后连通分量数
  7. 《ASP.NET MVC4 WEB编程》学习笔记------UrlHelper
  8. Python学习总结10:获取shell输出结果
  9. JS读取client端的文件的代码片段
  10. 点击Button后,执行MouseDown的过程(使用Call Stack观察很清楚)
  11. 基于ubuntu和windows连接
  12. Spring学习总结
  13. git错误:fatal: Not a git repository (or any of the parent directories): .git
  14. Definition of:payload
  15. Gradle 打包上传至私有仓库配置
  16. Python学习笔记(二)
  17. node path.resolve()
  18. Ubuntu 13.10 解决虚拟机摄像头无法使用问题
  19. 使用 Dojo 掌握面向对象开发
  20. Python类总结-多态及鸭子类型

热门文章

  1. Spring中获取request的几种方法,及其线程安全性分析(山东数漫江湖)
  2. bzoj 3207 可持久化线段树
  3. 为什么Javascript有设计缺陷
  4. poj 1837 Balance(背包)
  5. 安装Vue.js devtools
  6. ipython notebook环境搭建
  7. 【tomcat】手动部署动态JavaWeb项目到tomcat
  8. Low overhead memory space management
  9. powershell常用操作
  10. linux命令(22):mkdir命令