容斥原理——状态压缩zoj3233 zoj2836升级版
zoj2836就是裸的求lcm进行容斥,用dfs比较直观
zoj3233增加了一个集合b,lcm(b)的倍数是不符合条件的
那么在zoj2836的基础上,把lcm(x,lcm(b))造成的影响减去即可
用状态压缩来枚举集合状况
/*
给定两个集合s1,s2
求区间[L,R]能被s1里至少一个数整除,且不能被s2里至少一个数整除的个数
lcm(s2)的所有倍数都不可行,所以当dfs遇到lcm==lcm(s2)时要反过来
要防止越界的情况
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long long const ll INF=1e18+; ll LCM,L,R,n,m,a[],b[]; ll __lcm(ll a,ll b){//防溢出lcm
if(a==- || b==-)return -;
ll d=__gcd(a,b);
if(INF/b < a/d)return -;//lcm越界了
return a/__gcd(a,b)*b;//顺序不能错
} ll query(ll x){//状态压缩集合解法
ll res=;
for(ll i=;i<(<<n);i++){//枚举每种状态集
ll num=,cnt=;
for(ll j=;j<n;j++)
if(i & ((ll)<<j))
cnt++,num=__lcm(num,a[j+]);//下标j偏移了一位
if(num==-)num=INF;
ll tmp=__lcm(num,LCM);
if(tmp==-)tmp=INF;
if(cnt%)res+=x/num-x/tmp;
else res-=x/num-x/tmp;
}
return res;
} int main(){
while(cin>>n>>m>>L>>R,n){
for(int i=;i<=n;i++)cin>>a[i];
for(int i=;i<=m;i++)cin>>b[i];
LCM=;
for(int i=;i<=m;i++)LCM=__lcm(LCM,b[i]);
cout<<query(R)-query(L-)<<endl;
}
}
容斥原理——状态压缩zoj3233 zoj2836升级版的更多相关文章
- [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩)
[BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩) 题面 给出一棵树和一个图,点数均为n,问有多少种方法把树的节点标号,使得对于树上的任意两个节点u,v,若树上u ...
- hdu 1796(容斥原理+状态压缩)
How many integers can you find Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 ...
- hdu 2841(容斥原理+状态压缩)
Visible Trees Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- HDU 5768 Lucky7 (容斥原理 + 中国剩余定理 + 状态压缩 + 带膜乘法)
题意:……应该不用我说了,看起来就很容斥原理,很中国剩余定理…… 方法:因为题目中的n最大是15,使用状态压缩可以将所有的组合都举出来,然后再拆开成数组,进行中国剩余定理的运算,中国剩余定理能够求出同 ...
- [poj3904]Sky Code_状态压缩_容斥原理
Sky Code poj-3904 题目大意:给你n个数,问能选出多少满足题意的组数. 注释:如果一个组数满足题意当且仅当这个组中有且只有4个数,且这4个数的最大公约数是1,$1\le n\le 10 ...
- 【arc093f】Dark Horse(容斥原理,动态规划,状态压缩)
[arc093f]Dark Horse(容斥原理,动态规划,状态压缩) 题面 atcoder 有 \(2^n\) 名选手,编号为 \(1\) 至 \(2^n\) .现在这 \(2^n\) 名选手将进行 ...
- HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)
题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...
- hdu4336 Card Collector 状态压缩dp
Card Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- POJ 3254. Corn Fields 状态压缩DP (入门级)
Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9806 Accepted: 5185 Descr ...
随机推荐
- linux mysql udf 提权
连接远程数据库 查看插件库路径 show variables like '%plugin%'; 写入udf库到插件目录: 32位: select unhex('7F454C46020101000000 ...
- SecureRandom的正确使用
目录 1. 什么是安全的随机数? 2. 怎么得到安全的随机数 3. SecureRandom最佳实践 3.1 基本用法 3.2 关于种子的设置 3.3 熵源不足时阻塞问题 4. 小结 1. 什么是安全 ...
- MySQL查询语句详解,排序、分组、聚合函数、约束
create database day20; 查询的时候from前面的字段是需要显示出来的内容,后面是条件use day20;create table phones(id int,pinpai var ...
- springboot整合thymeleaf手动渲染
Thymeleaf手动渲染 为提高页面访问速度,可缓存html页面,客户端请求从缓存获取,获取不到再手动渲染 在spring4下 @Autowired ThymeleafViewResolver th ...
- vue+nginx配置二级域名
[1]修改路由文件 [2]修改配置文件 [3]修改本机nginx配置文件 [4]修改服务器nginx配置文件 [5]重启nginx文件,用二级域名访问 http://192.168.199.xxx:7 ...
- 2019-6-23-WPF-解决弹出模态窗口关闭后,主窗口不在最前
title author date CreateTime categories WPF 解决弹出模态窗口关闭后,主窗口不在最前 lindexi 2019-06-23 11:48:38 +0800 20 ...
- 2018-9-29-Roslyn-通过-Nuget-引用源代码-在-VS-智能提示正常但是无法编译
title author date CreateTime categories Roslyn 通过 Nuget 引用源代码 在 VS 智能提示正常但是无法编译 lindexi 2018-09-29 1 ...
- Windows系统查看xxx.dll、xxx.lib文件的导出函数、依赖文件等信息的方法
1.查看xxx.dll或xxx.exe文件的导出函数.依赖文件等信息,使用Depends软件即可. 2.查看xxx.lib文件的导出函数.依赖文件等信息,使用Visual Studio附带工具dump ...
- leetcode-219-存在重复元素②
题目描述: 第一次提交:超时 class Solution: def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool ...
- 校园商铺-2Logback配置与使用-3验证配置
1. 验证logback配置 1.1. 启动tomcat,得到CATALINA_BASE地址: 1.2 访问接口,查看日志 浏览器打开http://localhost:18080/o2o/supera ...