“玲珑杯”线上赛 Round #17 河南专场 B:震惊,99%+的中国人都会算错的问题(容斥计算)
传送门
题意
略
分析
是一道稍微变形的容斥题目,容斥一般的公式
\]
但是这道题只要奇数次数的,那么对于第k项乘以一个系数\(2^{k-1}\)
具体见代码
trick
如果在每次dfs中for循环前加一个判断:if(lcm<=n)...
时间会从1000ms降到20ms
代码
#include<cstdio>
#define ll long long
#define F(i,a,b) for(int i=a;i<=b;++i)
#define R(i,a,b) for(int i=a;i<b;++i)
#define mem(a,b) memset(a,b,sizeof(a))
//#pragma comment(linker, "/STACK:102400000,102400000")
//inline void read(int &x){x=0; char ch=getchar();while(ch<'0') ch=getchar();while(ch>='0'){x=x*10+ch-48; ch=getchar();}}
inline ll gcd(ll a,ll b) {return b==0?a:gcd(b,a%b);}
int t,n,m;
ll lcm,a[16],ans;
/*
举个栗子,如A,B,C,那么第一次dfs会计算A,AB,AC,ABC的值,第二次dfs会计算B,BC,第三次dfs会计算C
,希望大家能够理解
*/
void dfs(int cur,ll lcm,int num)//当前第cur个,需要乘的系数为2^(num-1)
{
	lcm=a[cur]/gcd(a[cur],lcm)*lcm;
	if(num&1) ans+=n/lcm*(1ll<<(num-1));
	else ans-=n/lcm*(1ll<<(num-1));
	if(lcm<=n) for(int i=cur+1;i<m;++i)  dfs(i,lcm,num+1);
}
int main()
{
    for(scanf("%d",&t);t--;)
    {
    	scanf("%d %d",&n,&m);
    	ans=0;
    	for(int i=0;i<m;++i) scanf("%lld",a+i);
    	for(int i=0;i<m;++i)  dfs(i,a[i],1);
    	printf("%lld\n", ans);
    }
    return 0;
}
												
											“玲珑杯”线上赛 Round #17 河南专场 B:震惊,99%+的中国人都会算错的问题(容斥计算)的更多相关文章
- “玲珑杯”线上赛 Round #17 河南专场
		
闲来无事呆在寝室打打题,没有想到还有中奖这种操作,超开心的 玲珑杯”线上赛 Round #17 河南专场 Start Time:2017-06-24 12:00:00 End Time:2017-06 ...
 - “玲珑杯”线上赛 Round #17 河南专场 A: 	Sin your life(和化积公式)
		
传送门 题意 略 分析 首先将sin(x)+sin(y)+sin(z)h转化成\(2*sin(\frac{x+y}2)*cos(\frac{x-y}2)+sin(z)\),而cos(z)=cos(-z ...
 - 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 H题 Rock Paper Scissors Lizard Spock.(FFT字符串匹配)
		
2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...
 - 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛  F题 Clever King(最小割)
		
2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...
 - 记一次线上由nginx upstream keepalive与http协议"协作"引起的接口报错率飙高事件
		
年前接到个任务,说要解决线上一些手机客户端接口报错率很高的问题.拿到了监控邮件,粗略一看,各种50%+的错误率,简直触目惊心.这种疑难杂症解决起来还是挺好玩的,于是撸起袖子action. 最终的结果虽 ...
 - 2019第十二届全国大学生信息安全实践创新赛线上赛Writeup
		
本文章来自https://www.cnblogs.com/iAmSoScArEd/p/10780242.html 未经允许不得转载! 1.MISC-签到 下载附件后,看到readme.txt打开后提 ...
 - 2017CUIT校赛-线上赛
		
2017Pwnhub杯-CUIT校赛 这是CUIT第十三届校赛啦,也是我参加的第一次校赛. 在被虐到崩溃的过程中也学到了一些东西. 这次比赛是从5.27早上十点打到5.28晚上十点,共36小时,中间睡 ...
 - RCTF 2018线上赛 writeup
		
苦逼的RCTF,只进行了两天,刚好第二天是5.20,出去xxx了,没法打比赛,难受.比赛结束了,还不准继续提交flag进行正确校验了,更难受. 下面是本次ctf解题思路流程 后面我解出的题会陆续更新上 ...
 - 计蒜客 25985.Goldbach-米勒拉宾素数判定(大素数) (2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 B)
		
若干年之前的一道题,当时能写出来还是超级开心的,虽然是个板子题.一直忘记写博客,备忘一下. 米勒拉判大素数,关于米勒拉宾是个什么东西,传送门了解一下:biubiubiu~ B. Goldbach 题目 ...
 
随机推荐
- 转: memcached Java客户端spymemcached的一致性Hash算法
			
转自:http://colobu.com/2015/04/13/consistent-hash-algorithm-in-java-memcached-client/ memcached Java客户 ...
 - Type cannot use 'try' with exceptions disabled
			
cannot use ‘throw’ with exceptions disabled 在为 DragonBonesCPP/refactoring 的 cocos2d-x-3.2 demo 增加 An ...
 - HDU 2049 不容易系列之(4)——考新郎 (递推,含Cmn公式)
			
不容易系列之(4)——考新郎 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
 - TinyXML:属性
			
TiXmlAttribute: 代表XML中的属性,TiXmlAttribute中定义了一系列对属性的操作 TiXmlAttribute的友元类: friend class TiXmlAttribut ...
 - 基于mqtt协议实现手机位置跟踪
			
Mqtt协议是物联网领域的一个标准协议,具有轻巧,对设备,带宽要求低,可靠稳定的特点,适合用来实现手机定位跟踪功能. 目前我初步搭建起来了整个可运行的框架,大致为如下思路:1.手机端通过位置服务,获取 ...
 - ECMAScript学习笔记
			
1. ECMAScript不存在块级作用域,因此在循环内部定义的变量,在循环外也是可以访问的 eg: var count =10; fpr(var i=0; i<count; i++){ ale ...
 - debian old version cd and distribution archives
			
1 debian old version cd/dvd 官网的old version image,下载速度很慢 http://cdimage.debian.org/cdimage 下面这个靠谱,是镜像 ...
 - BZOJ5379: Tree
			
BZOJ5379: Tree Description JudgeOnline/upload/201806/1.pdf 题解Here! 题目大意就是:1. 换根.2. 对$LCA(u,v)$的子树修改. ...
 - IOS中调用系统拨打电话发送短信
			
一.调用打电话界面 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat ...
 - HDU 5666 Segment
			
Segment Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...