LOJ6356 四色灯
传送门
子任务1:m=1
直接算两遍选或不选就可以了
期望得分:10
子任务2:n<=1e4 m<=5
两种方法
一。枚举每一个数,看它被几个数整除,它对答案有贡献当且仅当被选4k次(k∈N)所以一个数的贡献就是
时间复杂度:O(nm)
二。枚举m的子集,因为m<=5可以进行类似求n个数里不被某几个数整除的数的个数一样的容斥,只需要把4的容斥系数改成2就可以了。时间复杂度:O(3^m*m)
期望得分:30
子任务3:n<=1e9 m<=20
首先我们根据子任务二中枚举m的子集的方法拓展一下。
令f(s)表示[1,n]中多少数是s集合中的数的公倍数
即
g(s)表示[1,n]中恰好被s整除但不会被除s的子集外整除的数的个数
可以通过枚举子集来进行转移 时间复杂度O(3^n)
我们接下来开始优化
令F(i)表示 G(i)同理
这个可以理解成因为对于j>i所以j一定包含了C(j,i)个大小为i的子集所以我们把它减掉就可以了
这个其实就是把上面的G(j)改成以F的容斥所以长的差不多qwq
很明显F可以在O(2^m*m)的时间复杂度内计算完
G可以在O(m^2)的时间复杂度容斥
所以总复杂度为O(2^m*m)
期望得分100
附代码。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define inf 20021225
#define ll long long
#define mdn 998244353
#define mod(x) (x>=mdn?x-mdn:x)
using namespace std;int m,a[23],n;
int G[23],f[23][23];
int gcd(int x,int y)
{return y==0?x:gcd(y,x%y);
}
int count(int x)
{int cnt=0;while(x){if(x&1) cnt++;x>>=1;}return cnt;
}
void pre()
{f[0][0]=f[1][0]=f[1][1]=1;for(int i=2;i<=m;i++){f[i][i]=f[i][0]=1;for(int j=1;j<i;j++)f[i][j]=mod(f[i-1][j]+f[i-1][j-1]);}
}
int C(int x,int y)
{return f[x][y];
}
int ksm(int bs,int mi)
{int ans=1;while(mi){if(mi&1) ans=(ll)ans*bs%mdn;bs=(ll)bs*bs%mdn;mi>>=1;}return ans;
}
int main()
{int ans=0;scanf("%d%d",&n,&m);pre();for(int i=1;i<=m;i++) scanf("%d",&a[i]);for(int i=1;i<(1<<m);i++){int g=1,f,j,cnt=count(i);for(j=0;j<m;j++){if(i&(1<<j)){f=gcd(a[j+1],g);if((ll)g/f*a[j+1]>n) break;g=g/f*a[j+1];}}if(j<m) continue;else G[cnt]=mod(G[cnt]+n/g);}G[0]=n;for(int i=m;~i;i--)for(int j=i+1;j<=m;j++)G[i]=mod(G[i]-(ll)G[j]*C(j,i)%mdn+mdn);//for(int i=0;i<=m;i++) printf("%d\n",G[i]);for(int i=0;i<=m;i++)for(int j=0;j<=i;j+=4)ans=mod(ans+(ll)G[i]*C(i,j)%mdn*(1<<m-i)%mdn);printf("%d\n",(ll)ans*ksm((1<<m),mdn-2)%mdn);return 0;
}
LOJ6356 四色灯相关推荐
- LOJ6356四色灯
Description Problem Solution 原问题可以转化为求,最后再乘上一个 那么考虑容斥得到每一种集合的贡献,推一下容斥系数. 设表示集合大小为时的容斥系数. ,此时相当于没有选任何 ...
- 渔翁、魔鬼和四色鱼的故事
渔翁和魔鬼 很久以前,有个上了岁数的渔翁,每天靠打鱼维持生活.老渔翁一家除了老婆之外,还有三个儿女,都靠他供养,因此家里很贫穷,生活困难.他虽然以打鱼为生,可是有个奇怪的习惯,每天只打四网鱼,从来不肯 ...
- DDD:用 “四色原型” 进行 “聚合设计”
四色原型 在企业应用的上下文中,四色原型是领域模型的一种原型,原型的意思是指领域中的任何模型及其关系都可以抽象为"四色原型". 四色原型可以用这句话进行描述:某个人(Party)的 ...
- DDD领域驱动设计---战略设计(包括四色原型建模)
相当于策略设计,从宏观角度着眼于领域的分析设计,属于系统分析阶段,注重如何从有界上下文中寻找领域模型,战略模式由有界上下文.无所不在的语言和上下文映射组成. 在战略设计前首先要了解下领域知 ...
- 四色原型图进行业务建模的思考
一般的需求,我们利用用例图就可以表达清楚了,如果再复杂些,我们可能还得再配合序列图.状态图等加于说明.但是,在非常复杂的业务逻辑中,怎么样才能找出它们的联系?而且还能更好地拥抱OO(面向对象),OO的 ...
- 徐昊:运用四色建模法进行领域分析
徐昊@ThoughtWorks 读完需要 6 分钟 速读仅需 2 分钟 1 前言 领域建模有很多种方法,对于同样的问题域使用不同的建模手段得到的模型可能也不尽相同.于是我经常听到这样一个问题: 怎么才 ...
- DDD:四色原型、DDD、DCI之间的关系
PPT对应某个聚合. Des对应某个聚合或其它聚合内的实体或值对象. MI对应某个聚合. Role对应PPT(Data)在某个上下文(Context)执行某些交互(Interactive)的代理或装饰 ...
- windows怎么将图片变为单色图片_印刷丨单色黑与四色黑
在打印店打印大面积黑色时你们是否遇见油墨太多沁湿纸张出现机器卡纸:印出的黑色没达到自己想要的那么黑:细看会看见其它色的叠印:那么你可能就是单色与四黑色没有选择正确. 什么是单色黑? 要理解什么是单色黑 ...
- 四色菊皇家大学 SiSaKet Rajabhat University (SSKRU)
四色菊皇家大学 SiSaKet Rajabhat University (SSKRU) 四色菊皇家大学(泰语名称มหาวิทยาลัยราชภัฏศรีสะเกษ 英语名称Si Sa Ket Raja ...
最新文章
- iOS 6上的Safari是否缓存$ .ajax结果?
- 律师如何加强自身的计算机文化教育网,提高_计算机文化基础_教学效果的几点心得.pdf...
- TensorFlow索引与切片语句
- 声学漫谈之七:扬声器等效电路与参数
- “在解决方案中的一个或多个项目由于以下原因未能加载 项目文件或网站已移动或重新命名,或者不在您的计算机上” 的解决办法...
- css的再深入7(更新中···)
- 靶场练习第十天~vulnhub靶场之dc-2
- HashMap和ConcurrentHashMap的区别,HashMap的底层源码。
- 马的遍历(洛谷-P1443)
- 津津的储蓄计划(洛谷-P1089)
- Asp2.0下Login.Aspx页面和VS2005登陆控件冲突问题!
- 执行计划有时不准确_生产计划四个层次和解决方案
- pytest测试框架(五)---使用xfail将用例标记为失败
- nginx是干嘛用的_上帝视角——面试官常问的nginx的几个问题
- 一个人的旅行 图论最短路问题
- 熵增定律:企业和个人发展的终极规律
- spark MLlib 概念 2:Stratified sampling 层次抽样
- nodejs eggjs框架 爬虫 readhub.me
- SQL Tuning Advisor 使用11G的自动调优建议
- 为什么手机网速太慢_手机网速慢怎么回事?一分钟就提速两倍的方法