题目链接

题意

是否存在选择方案使所选的数$gcd=1$

思路

$f[i][j]$表示选$i$个数$gcd=j$的方案数,$cnt[i]$表示包含因子$i$的数的个数,则$f[i][j]=$$C_{cnt[j]}^i$$-f[i][d],j|d,j<d$

代码

#include <bits/stdc++.h>
#define DBG(x) cerr << #x << " = " << x << endl;
const int maxn = 3e5+5;
const int mod  = 1e9+7;
using namespace std;
typedef long long LL;int n,a[maxn];
int tmp,cnt[maxn];
LL f[15][maxn];
LL inv[maxn],fac[maxn];LL qpow(LL a,LL b,LL p){LL res=1;while(b){if(b&1)res=(res*a)%p;a=(a*a)%p;b>>=1;}return res%p;
}int C(int a,int b){return ((((fac[a]*inv[b])%mod)*inv[a-b])%mod)%mod;
}void init(){for(int i=1;i<maxn;i++)for(int j=i+i;j<maxn;j+=i)cnt[i]+=cnt[j];fac[0]=1;for(int i=1;i<=n;i++)fac[i]=(fac[i-1]*i)%mod;inv[n]=qpow(fac[n],mod-2,mod);for(int i=n;i>=1;i--)inv[i-1]=(inv[i]*1LL*i)%mod;
}int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);cnt[a[i]]++;f[1][a[i]]++;tmp=((i == 1) ? a[i] : __gcd(tmp,a[i]));}if(tmp != 1){puts("-1");return 0;}else{init();for(int i=1;i<=7;i++){for(int j=maxn-1;j>=1;j--){f[i][j]=C(cnt[j],i);for(int k=j+j;k<maxn;k+=j)f[i][j]=(f[i][j]-f[i][k]+mod)%mod;}if(f[i][1] > 0){printf("%d\n",i);return 0;}}}
}

转载于:https://www.cnblogs.com/DuskOB/p/10006757.html

Codeforces 1043F(容斥+dp)相关推荐

  1. LOJ#3124. 「CTS2019 | CTSC2019」氪金手游 容斥+DP

    神仙容斥+DP可还行. code: #include <cstdio> #include <cmath> #include <vector> #include &l ...

  2. 洛谷P3349:小星星(容斥dp)

    解析 先安利一波洛谷上我介绍如何用暴力日过去的博客 现在开始务正业 考虑把dp记录状态的一维s去掉 这样单次转移复杂度变成n3n^3n3 但是这样显然会算多啊! 因为一个编号可能会用很多次 考虑容斥 ...

  3. P4707 重返现世 扩展 MinMax 容斥+DP

    题目传送门 https://www.luogu.org/problem/P4707 题解 很容易想到这是一个 MinMax 容斥的题目. 设每一个物品被收集的时间为 \(t_i\),那么集齐 \(k\ ...

  4. 洛谷P4707 重返现世(扩展MinMax容斥+dp)

    传送门 我永远讨厌\(dp.jpg\) 前置姿势 扩展\(Min-Max\)容斥 题解 看纳尔博客去→_→ 咱现在还没搞懂为啥初值要设为\(-1\)-- //minamoto #include< ...

  5. 840C - On the Bench (容斥 + DP)

    840C - On the Bench 题意 给定序列 a[1...n]a[1...n]a[1...n],求有多种 aaa 的排列,满足任意两个相邻的数乘积不是完全平方数,答案对 109+710^9+ ...

  6. P5643-[PKUWC2018]随机游走【min-max容斥,dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P5643 题目大意 给出nnn个点的一棵树,一个人从点xxx开始随机游走,然后QQQ次询问给出一个点集SSS,求期望 ...

  7. ARC115E-LEQ and NEQ【容斥,dp,线段树】

    正题 题目链接:https://atcoder.jp/contests/arc115/tasks/arc115_d 题目大意 nnn个数字的序列xxx,第xi∈[1,Ai]∩Zx_i\in [1,A_ ...

  8. P4859-已经没有什么好害怕的了【容斥,dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P4859 题目大意 两个长度为nnn的序列a,ba,ba,b两两匹配,求ai>bia_i>b_iai​& ...

  9. 牛客练习赛71C-数学考试【容斥,dp】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/7745/C 题目大意 求一nnn的排列,给mmm个限制pip_ipi​表示1∼pi1\sim p_i1∼pi​ ...

最新文章

  1. OpenStack如何实现高可用集群介绍
  2. xshell 设置屏幕字体
  3. asp.net跨页面传值收集
  4. 电脑f2还原系统步骤_使用冰点还原电脑每次重启都会还原,打造一个百毒不侵的系统...
  5. XP访问Linux共享错误提示
  6. tensorrt基础知识+torch版lenet转c++ trt
  7. docker harbor 域名_docker registry harbor
  8. flutter 刷脸_GitHub - hqwlkj/wechat_face_payment: 微信刷脸支付、刷脸认证、扫码支持等 Flutter 插件....
  9. 写在弥勒宝贝两周年之际
  10. 服务自动拉起,定时日志清理,数据统计的shell脚本
  11. 实验:添加AXI IP到设计
  12. [导入]ASP.NET 2.0数据处理之高级分页/排序
  13. nginx 安全优化
  14. mysql查询表字段默认值
  15. ThinkPHP5集成JS-SDK实现微信自定义分享功能
  16. “奔跑吧”大数据!河北大数据产业“跑”向升级路
  17. HP M1136 USB 连接安装驱动 提示“新设备已连接” 解决方案
  18. usaco3.4.3 Raucous Rockers
  19. 简单的js时间转中文大写时间
  20. 基于学术研究下载NOAA气象雷达资料的详细步骤

热门文章

  1. 两个前置摄像头_前后六颗摄像头?vivo V17 Pro率先实现升降式前置双摄
  2. 【二分法】计蒜客:对数方程
  3. 串口控制led闪烁课程设计_排除led显示屏故障的方法及步骤
  4. This scheduler instance is still active but was recovered by another instance in the cluster
  5. layUI固定列重复
  6. 主要知识产权(专利权,著作权,商标权)的申请与保护
  7. 【CCCC】L2-005 集合相似度 (25分),维护set数组去重,比较统计
  8. Calibre修改保存电子书为中文
  9. 【服务器】【私有云】宝塔安装KodExplorer
  10. k型热电偶材料_热电偶温度计的二三事