题目

给定长度为\(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. day05---系统的重要文件(3)

    1) /usr/local 编辑 安装的软件 第三方软件安装位置 软件安装的三种方法 1.yum安装 自动解决依赖问题 yum [选项参数] 包名 第一个里程碑:我想要安装的软件的名字 或者是 知道命 ...

  2. 【LeetCode哈希表#1】有效的字母异位词+赎金信(数组)

    有效的字母异位词 力扣题目链接(opens new window) 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagr ...

  3. macOS通过ssh使用PEM登录

    在win上面可以使用XSHELL来登录类似于亚马逊这样的安全服务器,在mac上面就可以使用系统自带的命令工具来连接 使用命令 ssh -i key.pem [server] 如下: ssh -i ke ...

  4. 【Azure Developer】Azure REST API: 如何通过 API查看 Recovery Services Vaults(恢复保管库)的备份策略信息? 如备份中是否含有虚拟机的Disk

    问题描述 如何通过 API查看 Recovery Services Vaults(恢复保管库)的备份策略信息? 如备份中是否含有虚拟机的Disk.在Azure门户中可以通过查看Backup Item查 ...

  5. docker知识整理(备份)

    概念: 镜像:Docker 镜像类似于虚拟机镜像,可以将它理解为一个只读的模板 .镜像是创建 Docker 容器的基础.通过版本管理和增量的文件系统, Docker 提供了一套十分简单的机制来创建和更 ...

  6. PostgreSQL、KingBase 数据库 ORDER BY LIMIT 查询缓慢案例

    好久没写博客了,最近从人大金仓离职了,新公司入职了蚂蚁集团,正在全力学习 OcenaBase 数据库的体系结构中. 以后分享的案例知识基本上都是以 OcenaBase 分布式数据库为主了,呦西. 昨天 ...

  7. Java 一悟结束异常处理 Biu丶

  8. Asp .Net Core 系列:Asp .Net Core 集成 Newtonsoft.Json

    简介 Newtonsoft.Json是一个在.NET环境下开源的JSON格式序列化和反序列化的类库.它可以将.NET对象转换为JSON格式的字符串,也可以将JSON格式的字符串转换为.NET对象.这个 ...

  9. 基于RocketMQ实现分布式事务

    背景 在一个微服务架构的项目中,一个业务操作可能涉及到多个服务,这些服务往往是独立部署,构成一个个独立的系统.这种分布式的系统架构往往面临着分布式事务的问题.为了保证系统数据的一致性,我们需要确保这些 ...

  10. 剑桥英英在线词典 - 可以查单词 可数-不可数 - 英语 a few/few/a little/little

    There is _____ milk in a fridge. Let's go buy some. A. a few B. few C. a little D. little 解析:经典老知识点 ...