题目

给定长度为\(n,n\leq 10^5\)的序列\(a,a_i,m\leq 255\),多组询问求

\[\sum_{i=l}^{r-2}\sum_{j=i+1}^{r-1}\sum_{k=j+1}^r[a_i\: or\:a_j\:or\:a_k==m]
\]

分析

直接求显然不行,考虑容斥,

设\(s[i][j]\)表示前\(i\)个数中有多少个数与\(j\)按位或为\(j\)

那么答案就是

\[\sum_{j\:or\:m==j}(-1)^{cnt[j^m]}C(s[r][j]-s[l-1][j],3)
\]

代码

#include <cstdio>
#include <cctype>
#define rr register
using namespace std;
typedef long long lll;
const int N=100011,M=256;
int n,Q,s[N][M],a[N],xo[M];
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline void print(lll ans){
if (ans>9) print(ans/10);
putchar(ans%10+48);
}
inline lll C(int n){return 1ll*n*(n-1)/2*(n-2)/3;}
signed main(){
n=iut(); Q=iut();
for (rr int i=1;i<=n;++i){
a[i]=iut();
for (rr int j=0;j<M;++j)
s[i][j]=s[i-1][j]+((j&a[i])==a[i]);
}
for (rr int i=1;i<M;++i) xo[i]=xo[i&(i-1)]+1;
for (rr int i=1;i<=Q;++i){
rr int l=iut(),r=iut(),x=iut();
rr lll ans=0;
for (rr int j=x;j;j=(j-1)&x)
if (xo[x^j]&1) ans-=C(s[r][j]-s[l-1][j]);
else ans+=C(s[r][j]-s[l-1][j]);
print(ans),putchar(10);
}
return 0;
}

#容斥,排列组合#U138404 选数字的更多相关文章

  1. 2017ACM暑期多校联合训练 - Team 8 1011 HDU 6143 Killer Names (容斥+排列组合,dp+整数快速幂)

    题目链接 Problem Description Galen Marek, codenamed Starkiller, was a male Human apprentice of the Sith ...

  2. hdu6143 Killer Names 容斥+排列组合

    /** 题目:hdu6143 Killer Names 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6143 题意:有m种字符(可以不用完),组成两个长度 ...

  3. 【BZOJ4005】[JLOI2015] 骗我呢(容斥,组合计数)

    [BZOJ4005][JLOI2015] 骗我呢(容斥,组合计数) 题面 BZOJ 洛谷 题解 lalaxu #include<iostream> using namespace std; ...

  4. bzoj3782上学路线(Lucas+CRT+容斥DP+组合计数)

    传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=3782 有部分分的传送门:https://www.luogu.org/problemnew/ ...

  5. 排列组合n选m算法

    找10组合算法,非递归 http://blog.csdn.net/sdhongjun/article/details/51475302

  6. CF1043F Make It One 容斥+dp+组合

    考试的时候考的一道题,感觉挺神的. 我们发现将所有数去重后最多只会选不到 $7$ 后 $gcd$ 就会变成 $1$. 令 $f[i][k]$ 表示选 $i$ 个数后 $gcd$ 为 $k$ 的方案数. ...

  7. 2017多校第8场 HDU 6143 Killer Names 容斥,组合计数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6143 题意:m种颜色需要为两段长度为n的格子染色,且这两段之间不能出现相同的颜色,问总共有多少种情况. ...

  8. bzoj2839: 集合计数 容斥+组合

    2839: 集合计数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 523  Solved: 287[Submit][Status][Discuss] ...

  9. 5.15 省选模拟赛 容斥 生成函数 dp

    LINK:5.15 T2 个人感觉生成函数更无脑 容斥也好推的样子. 容易想到每次放数和数字的集合无关 所以得到一个dp f[i][j]表示前i个数字 逆序对为j的方案数. 容易得到转移 使用前缀和优 ...

  10. 【专题】计数问题(排列组合,容斥原理,Prufer序列)

    [容斥原理] 对于统计指定排列方案数的问题,一个方案是空间中的一个元素. 定义集合x是满足排列中第x个数的限定条件的方案集合,设排列长度为S,则一共S个集合. 容斥原理的本质是考虑[集合交 或 集合交 ...

随机推荐

  1. Kotlin 协程三 —— 数据流 Flow

    目录 一.Flow 的基本使用 1.1 Sequence 与 Flow 1.2 Flow 的简单使用 1.3 创建常规 Flow 的常用方式: 1.4 Flow 是冷流(惰性的) 1.5 Flow 的 ...

  2. Google Chrome 开启多下载下载,提高文件下载速度

    在地址栏输入: chrome://flags/#enable-parallel-downloading Parallel downloading改为Enabled后重启浏览器即可打开多线程下载 (多线 ...

  3. 用Docker搭建DNS服务器

    0.准备工作 如果是全新安装的服务器,先要给root账户设置密码,命令是 sudo passwd root 然后切换到root账户 su root 上述过程屏幕输出如下 1.Docker-Compos ...

  4. 为Study.BlazorOne引入Study.Trade模块

    # 1.在Application项目中添加Trade的对应的包 默认的源多半是nuget.org 我们自己的模块,一般在我们自己的NuGet服务器 从"已安装"切换到"浏 ...

  5. 第127篇:异步函数(async和await)练习题(异步,消息队列)

    好家伙,本篇为做题思考 书接上文   题目如下:  1.请给出下列代码的输出结果,并配合"消息队列"写出相关解释 async function foo() { console.lo ...

  6. Excel去除表格密码保护

    表格受密码保护时,我们修改数据Excel弹出"您试图更改的单元格或图表受保护,因而是只读的.若要修改受保护单元格或图表,请先使用'撤消工作表保护'命令(在'审阅'选项卡的'更改'组中)来取消 ...

  7. 010 editor 文件指纹分析

    1.010 Editor  介绍 16进制编辑器,支持模板和脚本操作,010编辑器支持编辑的文件类型 https://www.sweetscape.com/010editor/repository/t ...

  8. 使用 Docker 部署 MrDoc 在线文档管理系统

    1)MrDoc 介绍 MrDoc 简介 MrDoc 觅思文档:https://mrdoc.pro/ MrDoc 使用手册:https://doc.mrdoc.pro/p/user-guide/ MrD ...

  9. aardio 嵌入 其他应用程序

    aardio 嵌入 其他应用程序 需求 这个chrome壳不能进行拖拽和缩放,所以再套一个壳,可以再分屏的时候用 import win.ui; /*DSG{{*/ winform = win.form ...

  10. MFC自定义CStatusBar文字的颜色

    MFC里面的CStatusBar是没法自定义文字颜色的,需要我们自己绘制.这篇文章是在 Display colored text on Status Bar 代码的基础上进行改进的,使用起来更方便. ...