bzoj 1853: [Scoi2010]幸运数字&&2393: Cirno的完美算数教室【容斥原理】
翻了一些blog,只有我用状压预处理嘛2333,。把二进制位的0当成6,1当成8就行啦。(2393是2和9
然后\( dfs \)容斥,加上一个数的\( lcm \),减去两个数的\( lcm \),加上三个数的\( lcm \)...需要一些剪枝来控制复杂度。
剪枝:
1.对于预处理出来的幸运数字,把倍数都去掉
2.当\( lcm>b \)时退出
注意当选择了0个数时不更新答案。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const long long inf=1e18+7;
long long a,b,p[3005],ans;
bool cmp(const long long &a,const long long &b)
{
return a>b;
}
long long gcd(long long a,long long b)
{
return b==0?a:gcd(b,a%b);
}
void dfs(int x,int y,long long z)
{
if(x>p[0])
{
if(y&1)
ans+=((y&1)?1:-1)*(b/z-(a-1)/z);
else if(y)
ans-=b/z-(a-1)/z;
return;
}
dfs(x+1,y,z);
long long tmp=z/gcd(p[x],z);
if((double)p[x]*tmp<=b)
dfs(x+1,y+1,p[x]*tmp);
}
int main()
{
for(long long i=1;i<=10;i++)
for(long long j=0;j<(1<<i);j++)
{
long long now=0ll;
for(long long k=1,b=j;k<=i;k++,b>>=1)
{
if(b&1)
now=now*10+8;//9
else
now=now*10+6;//2
}
p[++p[0]]=now;
}
sort(p+1,p+1+p[0]);
for(long long i=1;i<=p[0];i++)
if(p[i]!=inf)
for(long long j=i+1;j<=p[0];j++)
if(p[j]%p[i]==0ll)
p[j]=inf;
sort(p+1,p+1+p[0]);
while(p[p[0]]==inf)
p[0]--;
sort(p+1,p+1+p[0],cmp);
scanf("%lld%lld",&a,&b);
dfs(1,0,1);
printf("%lld\n",ans);
return 0;
}
bzoj 1853: [Scoi2010]幸运数字&&2393: Cirno的完美算数教室【容斥原理】的更多相关文章
- Bzoj 2393: Cirno的完美算数教室 容斥原理,深搜
2393: Cirno的完美算数教室 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 287 Solved: 175[Submit][Status][ ...
- [bzoj 2393] Cirno的完美算数教室 (容斥原理+dfs剪枝)
题目描述 CirnoCirnoCirno发现了一种bakabakabaka数,这种数呢只含有222和999两种数字 现在CirnoCirnoCirno想知道[L,R][L,R][L,R]中有多少个数能 ...
- 【BZOJ-1853&2393】幸运数字&Cirno的完美算数教室 容斥原理 + 爆搜 + 剪枝
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 1817 Solved: 665[Submit][Status] ...
- BZOJ 1853: [Scoi2010]幸运数字
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 2117 Solved: 779[Submit][Status] ...
- Bzoj 1853: [Scoi2010]幸运数字 容斥原理,深搜
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 1774 Solved: 644[Submit][Status] ...
- bzoj 1853: [Scoi2010]幸运数字 容斥
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 1170 Solved: 406[Submit][Status] ...
- ●BZOJ 2393 Cirno的完美算数教室
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2393 题解: 容斥原理,暴力搜索,剪枝...和 [Scoi2010 幸运数字] 一样的(只是 ...
- BZOJ 1853: [Scoi2010]幸运数字(容斥原理)
http://www.lydsy.com/JudgeOnline/problem.php?id=1853 题意: 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运 ...
- ●BZOJ 1853 [Scoi2010]幸运数字
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1853 题解: 容斥原理,暴力搜索,剪枝(这剪枝剪得真玄学) 首先容易发现,幸运号码不超过 2 ...
随机推荐
- python学习之-- IO多路复用 select模块
python I/O多路复用包括3个模块,上一篇已经说过概念,这里我使用的是select模块实现一个ftp并发 服务器端核心代码: import socket,select import queue, ...
- [Bzoj1034][ZJOJ2008]泡泡堂BNB(贪心)
1034: [ZJOI2008]泡泡堂BNB Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3482 Solved: 1776[Submit][St ...
- HDU 3001【状态压缩DP】
题意: 给n个点m条无向边. 要求每个点最多走两次,要访问所有的点给出要求路线中边的权值总和最小. 思路: 三进制状态压缩DP,0代表走了0次,1,2类推. 第一次弄三进制状态压缩DP,感觉重点是对数 ...
- 在Studio中使用Access数据库时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”
错误提示:
- 【stl学习笔记】deques
deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似.deque的实现比较复杂,内部会维护一个map(注意!不是STL中的map ...
- [LeetCode] Contains Duplicate(II,III)
Contains Duplicate Given an array of integers, find if the array contains any duplicates. Your funct ...
- win8系统 如何不显示这台电脑的文件夹
在win8系统中,默认有下面这种文件夹 只要打开注册表编辑器,找到下面所示的项目,删除所有子文件夹即可(最后剩下一个DelegateFolders不用管) [HKEY_LOCAL_MACHINE\ ...
- 基于编程人员Python学习第一章节
基于廖雪峰的python零基础学习后,自我总结.适用于有一定基础的编程人员,对我而言,则是基于.net已有方面,通过学习,记录自我觉得有用的地方,便于后续回顾. 主要以快速定位内容,通过直观代码输入输 ...
- Vue调试工具 vue-devtools
vue-devtools是一款基于chrome浏览器的插件,可以帮我们快速调试vue项目 vue-devtools手动安装: 第一步:找到vue-devtools的github项目(https://g ...
- 【转】LoadRunner监控 -- Linux的17个指标
这17个指标根据需要设置,指标设置的越多,对服务器真实值影响越大,所以要秉承按需而设的原则. 1.Average load:Average number of processes simultan ...