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