%%%%%%%%%%%lst神仙 这是他的做法 吊了标算

对于这种有多少区间满足要求的 我们套路的用分治做 每次都统计左端点在左半边 右端点在右半边的个数

设f(i) 表示当前点到中间分割点的最大值,g(i)表示当前点到中间分割点的或和

我们发现 g(i)≥f(i) 所以只需找到g[i]=f[i]的区间就好

然后f肯定是单调递增的

所以可以维护双指针

边界条件很坏坏 膜lst神仙啊

#include<bits/stdc++.h>
#define N 1000005
#define int long long
using namespace std;
template<class T>
inline void read(T &x)
{x=0; int f=1;static char ch=getchar();while((!isdigit(ch))&&ch!='-')  ch=getchar();if(ch=='-') f=-1;while(isdigit(ch))  x=x*10+ch-'0',ch=getchar();x*=f;
}
int n,s[N],f[N],g[N],ans;
inline void solve(int l,int r)
{if(l>=r)    return;int mid=(l+r)>>1;f[mid]=s[mid],f[mid+1]=s[mid+1];for(int i=mid-1;i>=l;i--)   f[i]=max(s[i],f[i+1]);for(int i=mid+2;i<=r;i++)   f[i]=max(s[i],f[i-1]);g[mid]=s[mid],g[mid+1]=s[mid+1];for(int i=mid-1;i>=l;i--)   g[i]=s[i]|g[i+1];for(int i=mid+2;i<=r;i++)   g[i]=s[i]|g[i-1];int pos=mid;for(int i=mid;i>=l;i--) //左端点 {if(f[i]==g[i]){while(pos<r&&((g[pos+1]|g[i])==g[i])&&f[pos+1]<=f[i])   pos++;  //1.没越界 2.是子集 3.最大值在左边 ans-=pos-mid;}} pos=mid+1;for(int i=mid+1;i<=r;i++){if(f[i]==g[i]){while(pos>l&&((g[pos-1]|g[i])==g[i])&&f[pos-1]<f[i])    pos--;ans-=mid-pos+1;}} solve(l,mid);solve(mid+1,r);
}
main()
{read(n);for(int i=1;i<=n;i++)   read(s[i]);ans=n*(n-1)/2;solve(1,n);cout<<ans;return 0;
}

转载于:https://www.cnblogs.com/Patrickpwq/articles/9877788.html

【NOIP校内模拟】T2 字胡串(分治)相关推荐

  1. 【NOIP校内模拟】T2 华莱士(环套树)

    其实就是要求最小的环套树森林 我们现在只考虑如何合并 设当前边的两个端点是x,y 若x,y在一个联通块里 那这个联通块要么是树 要么是环套树 假如是个环套树 加一条边后必定变成两个环 不符合要求 假如 ...

  2. 【NOIP校内模拟】塔

    我们可以这样考虑 X 必定是由若干个立方数拼起来的 因此我们可以逆着求 只需关心每次取哪个立方数即可 设a是最大的 a 使得 a^3 不超过 m 分析样例 我们发现在第一次的时候 就可以取a或者a-1 ...

  3. 【NOIP校内模拟】T1 膜法(组合数)

    整理题意后 对于每个询问其实就是 由于C(m,n)=C(m,m-n) 就变成了 其实就是在杨辉三角上的一列求其中的一段和 然后有个玄学的公式 什么意思呢 证明是很容易得到的 所以把阶乘预处理出来 由于 ...

  4. 【NOIP校内模拟】图论题

    设dis[i]表示根节点到i的距离(只经过树边),再设w[i]表示i到1这条边的距离 对于u和v我们考虑两种情况 ①.当u是v的祖先 则答案为dis[v]-dis[u] ②.当u不是v的祖先,明确从1 ...

  5. 【NOIP校内模拟】T3 长者(主席树+哈希+二分)

    我们先考虑如何比较两两的字符串 我们可以用线段树来维护哈希值 在线段树上根据二分的性质来做即可 又考虑到 每颗线段树是在之前的某颗基础上只修改了一个节点 那显然就想到了主席树 另外说说如何pushup ...

  6. NOIP 2017 Day1 T2 时间复杂度 complexity - 模拟题 题解

    作者@豪哒哒哒HaoDaDaDa 转载自简书@豪哒哒哒HaoDaDaDa-简书-NOIP 2017 Day1 T2 时间复杂度 (有一个月没有写简书了-) (这次终于开始拿Markdown写了,富文本 ...

  7. 2017.6.11 校内模拟赛

    题面及数据及std(有本人的也有原来的) :2017.6.11 校内模拟赛 T1 自己在纸上模拟一下后就会发现 可以用栈来搞一搞事情 受了上次zsq 讲的双栈排序的启发.. 具体就是将原盘子大小cop ...

  8. 2021年 第十二届蓝桥杯第二期校内模拟赛题解(Java版)

    时隔多日,终于会写一些简单DP了哈哈哈! 稍微改版,方便阅读,若有错,请指出 2019年 第十届蓝桥杯省赛题解(JavaB组版) 2020年 第十一届蓝桥杯第一场省赛题解(JavaB组版) 2020年 ...

  9. [蓝桥杯第十一届校内模拟赛] Apare_xzc

    华中师范大学蓝桥杯第十一届校内模拟赛 2020/3/22 8:00-12:00 题目还是比省赛要简单的,我9:25就做完了. 第一题 分析: 简单题,求给定的1200000的正约数的个数.我们可以暴力 ...

最新文章

  1. this - 想说爱你不容易
  2. python递归算法 电影院票价问题_算法课堂实验报告(二)——python递归和分治(第k小的数,大数乘法问题)...
  3. 全新的 flow.ci Dashboard 上线
  4. 看动画学算法之:hashtable
  5. 20145313张雪纯《信息安全系统设计基础》第11周学习总结
  6. 边写 Javascript 代码边玩游戏 – WarriorJS
  7. 手动开启群辉php_如何使用Synology从php页面连接到mysql服务器?
  8. opengl es java_java – 在Android OpenGL ES App中加载纹理
  9. DNS-实验3_委派子域和转发
  10. 机器学习:残差学习、RNN、GAN、迁移学习、知识蒸馏
  11. CSS之BFC(Block Formatting Context)
  12. Cannot reach ADB server, attempting to reconnect. 或 list of devices attached(解决方案的最全整理)
  13. 黑马C++学习总结之对象的初始化和清理
  14. 启用与关闭 Ad Hoc Distributed Queries
  15. UnityHLSLShader 函数笔记
  16. 【计算机视觉】基于BOW的图像检索
  17. 「梗」、语言,与产品中的人文关怀
  18. C语言中sqrt怎么声明标识符,sqrt在c语言中怎么用?
  19. 共享科技商务岗位竞聘PPT模板
  20. Camstar 刷新缓存服务CDO

热门文章

  1. java 中j= i_java中 i = i++和 j = i++ 的区别
  2. 游戏与计算机系统不兼容,电脑安装游戏时提示此文件版本与正在运行Windows不兼容的解决方法...
  3. QTCreator快捷键
  4. 二维标准正态分布的matlab方程
  5. python在数据分析方面的应用、下列说法正确_智慧树知到大数据分析的python基础答案...
  6. everything下载哪个版本_Everything敏感信息泄露
  7. js html转盘点名,原生JS实现简易随机点名功能
  8. ios键盘横屏_平板电脑就只能追剧玩游戏?看这款外设键盘如何让iPad爱上办公...
  9. python网页数据处理_python 处理html页面爬虫数据
  10. POJ 1915 经典马步 双向bfs