题目链接:http://codeforces.com/contest/876/problem/F

题解:一道简单的思维题,知道最多一共有n*(n+1)/2种组合,不用直接找答案直接用总的组合数减去不符合的也行。找不符合的就简单了。找到一个位置i,他的最左边的位置就是a[i]在二进制下是0的最靠近i的位置,所以可以先用pos[j]记录第j位是0的位置。然后最右边的也是同理。这里还处理一下a[l]=a[r]的情况如果这个相同会出现重复考虑所以可以在第一遍找最左边位置的时候做一下处理最左边的位置起码大于之前a[i]位置

#include <iostream>
#include <cstring>
#include <cstdio>
#include <map>
using namespace std;
typedef long long ll;
const int M = 2e5 + ;
int a[M];
ll L_Max[M] , R_Max[M] , pos[];
map<int , int> mmp;
int main() {
int n;
scanf("%d" , &n);
ll ans = (ll)n * (ll)(n + ) / ;
for(int i = ; i <= n ; i++) {
scanf("%d" , &a[i]);
}
mmp.clear();
memset(pos , , sizeof(pos));
for(int i = ; i <= n ; i++) {
L_Max[i] = mmp[a[i]];
for(int j = ; j <= ; j++) {
if(!(a[i] & ( << j))) L_Max[i] = max(L_Max[i] , pos[j]);
}
for(int j = ; j <= ; j++) {
if(a[i] & ( << j)) {
pos[j] = i;
}
}
mmp[a[i]] = i;
}
for(int i = ; i <= ; i++) pos[i] = n + ;
for(int i = n ; i >= ; i--) {
R_Max[i] = n + ;
for(int j = ; j <= ; j++) {
if(!(a[i] & ( << j))) R_Max[i] = min(R_Max[i] , pos[j]);
}
for(int j = ; j <= ; j++) {
if(a[i] & ( << j)) {
pos[j] = i;
}
}
ans -= (i - L_Max[i]) * (R_Max[i] - i);
}
printf("%lld\n" , ans);
return ;
}

最新文章

  1. 安装angular-cli
  2. ngCloak 实现 Angular 初始化闪烁最佳实践
  3. Load Audio or Vedio files
  4. Angular系列----AngularJS入门教程05:双向绑定(转载)
  5. w3school-CSS
  6. a标签的css样式四个状态的设计
  7. JavaScript---网络编程(9-2)--DHTML技术演示(2-2)-表格加强
  8. &lt;转载&gt;C++命名空间
  9. fzu 2035 Axial symmetry(枚举+几何)
  10. 【EntityFramework 6.1.3】个人理解与问题记录
  11. shell-计算虚拟机创建时间
  12. Magento 2 Theme Ultimate Guide - 如何创建Magento 2主题终极指南
  13. 如何在优雅地Spring 中实现消息的发送和消费
  14. Jenkins与Git持续集成&amp;&amp;Linux上远程部署Java项目
  15. error.jsp错误页面跳转,统一异常处理
  16. RabbitMQ-从基础到实战(4)— 消息的交换(中)
  17. MATLAB(3)——GUI界面设计入门
  18. 关于OkHttp–支持SPDY协议的高效HTTP库 com.squareup.okhttp
  19. android代码常识
  20. Android 查看和管理sqlite数据库

热门文章

  1. PyQt4 在Windows下安装
  2. SWT 注意事项
  3. 5.源码分析---SOFARPC调用服务
  4. Kafka消息队列初识
  5. print(&#39;&#39;, end=&#39;&#39;)
  6. 在vue项目中引入阿里图标库小记
  7. Linux下SVN库迁移
  8. 【0725 | Day 1】计算机编程/计算机组成原理/计算机操作系统
  9. JS扫雷小游戏
  10. 洛谷 P2787 语文1(chin1)- 理理思维