CF 876F High City 单调栈,枚举,或运算
来源:互联网 发布:孟加拉国知乎 编辑:程序博客网 时间:2024/06/05 09:06
Problem F
题意:给出长度为n的序列a,问有多少个区间[L,R]满足 a[L]|a[L+1]|...a[R] >max(a[L],...a[R]).
n<=2e5, 0<=a[i]<=1e9.
先用单调栈O(n)求出a[i]最为最大值的区间[L,R].
找到a[i]最左边(右边)a[j] 满足 a[i]|a[i-1]|..a[j] >a[i] 即a[j]二进制中存在a[i]没有的bit.[x,y].
即a[i]|a[i-1]..|a[x-1]时的值是不变的.
题意:给出长度为n的序列a,问有多少个区间[L,R]满足 a[L]|a[L+1]|...a[R] >max(a[L],...a[R]).
n<=2e5, 0<=a[i]<=1e9.
先用单调栈O(n)求出a[i]最为最大值的区间[L,R].
找到a[i]最左边(右边)a[j] 满足 a[i]|a[i-1]|..a[j] >a[i] 即a[j]二进制中存在a[i]没有的bit.[x,y].
即a[i]|a[i-1]..|a[x-1]时的值是不变的.
容易算出以a[i]为最大值时,a[L]|a[L+1]|...a[R] < max(a[L],...a[R])区间个数.左端点有i-x+1种选法 右端点有b-y+1种.
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+20;int n,a[N],L[N],R[N];int le[32][N],rg[32][N];stack<int> s;int main(){ scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]); for(int i=0;i<n;i++) { while(!s.empty()&&a[s.top()]<a[i]) R[s.top()]=i-1,s.pop(); L[i]=s.empty()?0:s.top()+1; R[i]=n-1; s.push(i); } for(int j=0;j<30;j++) { for(int i=0;i<n;i++) { int h=i; while(h<n&&((a[i]>>j)&1)==((a[h]>>j)&1)) h++; h--; for(int k=i;k<=h;k++) le[j][k]=i,rg[j][k]=h; i=h; } } ll res=0; for(int i=0;i<n;i++) { int l=L[i],r=R[i]; for(int j=0;j<30;j++) { if((a[i]>>j)&1) continue; l=max(l,le[j][i]); r=min(r,rg[j][i]); } res+=(i-l+1ll)*(r-i+1ll); } ll ans=1ll*n*(n+1)/2 - res; cout<<ans<<endl; return 0;}
阅读全文
0 0
- CF 876F High City 单调栈,枚举,或运算
- [杂题 位运算] Codeforces #876F. High Cry
- codeforces 876F High Cry (思维,位运算)
- hdu1505 City Game (单调栈)
- CF 797F Mice and Holes(单调队列优化dp)
- A Famous City(单调栈)
- HDOJ 4252 A Famous City 单调栈
- HDU:4252 A Famous City(单调栈)
- hdu1505---City Game(单调栈)
- poj 3044 City Skyline 单调栈
- HDOJ 1505 City Game (单调栈)
- cf 547B 单调栈
- Codeforces 876F High Cry【逆向思维】
- Codeforces 876F High Cry【逆向思维】
- UVA 1330 - City Game(扫描方法 | 单调栈维护)
- hdu - 1505 - City Game(dp / 单调栈)
- HDU1505 City Game dp+若干次单调栈
- hdoj 1505 City Game 【dp or 单调栈】
- 根据时间获取相应当月每周的分布
- form 表单提交 submit与button
- Activity的启动模式
- Touch事件的传递机制
- 关于MySQL密码生成策略使用的注意事项(定期更新)
- CF 876F High City 单调栈,枚举,或运算
- 迷途未远
- 机器学习之决策树与随机森林模型
- 异常处理
- idea14注册码
- NOIP 2014 联合权值
- Java中堆内存和栈内存详解
- 【CS 1039】T8 数的划分 dfs版本 (2001年NOIP全国联赛提高组)
- SpringMVC实现文件下载的两种方法