Description

Solution

首先 \(v_1,v_2,v_3...v_n,P\) 能够构成的最小数是 \(gcd(P,v_1,v_2,v_3...v_n)\)
然后 \(gcd(P,v_1,v_2,v_3...v_n)|w_i\) 则可以构成 \(w_i\)
所以我们直接背包一下就可以了,设 \(m\) 为 \(P\) 的约数个数,\(m\) 最多是 \(n^{\frac{1}{3}}\)
那么复杂度就是 \(O(n*m*logP)\)
容易发现如果 \(gcd(v_i,P)=gcd(v_j,P)\) ,那么 \(v_i,v_j\) 对答案的影响是一样的,把相同类型的一起处理,把答案乘上 \(2^{cnt}-1\) 就行了
复杂度 \(O(m^2*logP)\)

#include<bits/stdc++.h>
using namespace std;
template<class T>void gi(T &x){int f;char c;for(f=1,c=getchar();c<'0'||c>'9';c=getchar())if(c=='-')f=-1;for(x=0;c<='9'&&c>='0';c=getchar())x=x*10+(c&15);x*=f;
}
const int N=1e6+10,mod=1e9+7;
int n,Q,P,num=0,a[N],m=0,c[N],f[2010][2010],bin[N],ans[N];
map<int,int>id;
inline void priwork(){for(int i=1;i*i<=P;i++)if(P%i==0){a[++m]=i;if(i*i!=P)a[++m]=P/i;}sort(a+1,a+m+1);for(int i=1;i<=m;i++)id[a[i]]=i;
}
inline int gcd(int x,int y){return y?gcd(y,x%y):x;}
int main(){freopen("pp.in","r",stdin);freopen("pp.out","w",stdout);cin>>n>>Q>>P;priwork();int x;bin[0]=1;for(int i=1;i<=n;i++)gi(x),c[id[gcd(x,P)]]++,bin[i]=bin[i-1]*2%mod;f[0][m]=1;for(int i=1;i<=m;i++){for(int j=1;j<=m;j++){if(c[i]){int p=id[gcd(a[i],a[j])];f[i][p]=(f[i][p]+1ll*f[i-1][j]*(bin[c[i]]-1))%mod;}f[i][j]=(f[i][j]+f[i-1][j])%mod;}}for(int i=1;i<=m;i++)for(int j=1;j<=i;j++)if(a[i]%a[j]==0)ans[i]=(ans[i]+f[m][j])%mod;while(Q--){gi(x);printf("%d\n",ans[id[gcd(x,P)]]);}return 0;
}

转载于:https://www.cnblogs.com/Yuzao/p/8972898.html

bzoj 5302: [Haoi2018]奇怪的背包相关推荐

  1. Luogu4495 [HAOI2018] 奇怪的背包 【扩展欧几里得算法】

    题目分析: 首先打个暴力求一下$10^9$以内因子最多的数的因子个数,发现只有$1344$个. 由于有$ax+by=k*(a,b)$和2017年noip的结论,所以我们可以发现对于任意多个数$a_1, ...

  2. 洛谷P4495 奇怪的背包 [HAOI2018] 数论

    正解:数论+dp 解题报告: 传送门! 首先看到这题,跳无数次,自然而然可以想到之前考过好几次了的一个结论--如果只考虑无限放置i,它可以且仅可以跳到gcd(p,v[i]) 举一反三一下,如果有多个i ...

  3. bzoj 2756 [SCOI2012]奇怪的游戏 二分+网络流

    2756:[SCOI2012]奇怪的游戏 Time Limit: 40 Sec  Memory Limit: 128 MB Submit: 4926  Solved: 1362 [Submit][St ...

  4. P4495-[HAOI2018]奇怪的背包【数论,dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P4495 题目大意 nnn个物品大小为viv_ivi​,每个物品有无数个,背包的重量定义为大小和%P\%P%P. q ...

  5. Dinic最大流(bzoj 2756: [SCOI2012]奇怪的游戏)

    Dinic算法: 转一张很好懂的图,复杂度O(V²E) 注意一开始的那个层次图并不是原图,是第一次bfs时所保留的边 (像原图中1和2之间也有一条边,不过第一次bfs时这条边并不会被经过) 2756: ...

  6. BZOJ 3195: [Jxoi2012]奇怪的道路 | 状压DP

    不是我吹牛逼 想了1min就想出来的题真是 超水的 题太简单了 解释就不解释了 #include<cstdio> #define P 1000000007 using namespace ...

  7. yyb省选前的一些计划

    突然意识到有一些题目的计划,才可以减少大量查水表或者找题目的时间. 所以我决定这样子处理. 按照这个链接慢慢做. 当然不可能只做省选题了. 需要适时候夹杂一些其他的题目. 比如\(agc/arc/cf ...

  8. 算法设计与分析(整理)

    2021年春-算法课 我与作业题库的爱恨情仇 我可没记住这个简朴的提交网站:http://47.99.179.148/ 有一个很蠢的坦白,我以为这个简陋的网站,提交时不会允许我们用algorithm库 ...

  9. 谷歌如何成功整合创业公司

    原文地址:http://tech.qq.com/zt2012/googlest/index.htm 糟糕的并购在科技界俯拾即是,最著名的案例莫过于美国在线(AOL)和时代华纳的失败交易,类似的故事还包 ...

最新文章

  1. 第一次胜过MobileNet的二值神经网络,-1与+1的三年艰苦跋涉
  2. 爱情第七课,被爱的秘密
  3. [转] 用Firebug调试JavaScript
  4. Linux16.04配置tensorflow(GPU源码编译)并深入了解tensorboard
  5. 前端有用JavaScript技巧
  6. python字典由什么组成_在Python中,将由关键字对组成的列表添加到字典中最简单的方法是什么?...
  7. Vue项目启动后Error: Cannot find module ‘xxx’的解决方法
  8. matlab6.0序列号,MFC软件获取USB设备的制造商、产品、序列号
  9. 浏览器加载渲染HTML、DOM、CSS、 JAVASCRIPT、IMAGE、FLASH、IFRAME、SRC属性等资源的顺序总结...
  10. 关于Ibatis中的executeForObject方法使用时,需要考虑空的问题!
  11. STM32 ARM调试问题总结
  12. 我不应该用计算机做题,中考答题涂卡必须用2B铅笔,看到电脑扫描的试卷,才明白有多重要...
  13. apache 服务器修改网站默认首页
  14. WinRAR压缩文件参数详解
  15. Vista v12.0 Win32-ISO 1DVD(地震数据处理)
  16. 新手淘客你必须知道的秘密
  17. this.$message
  18. FastAdmin遇到的坑
  19. 计算机应用技术要学java吗,计算机应用技术专业主要学什么
  20. 【阿里出品】数智园区白皮书(附下载)

热门文章

  1. UITabBarController加载之后不显示sub view controller
  2. 网络授时服务 NTP
  3. 【摘转留用】35前要考虑的
  4. Windows下的函数
  5. 学习cluster技术
  6. Git error. Command: `git ls-files --cached --exclude-standard --recurse-submodules`
  7. Azure DevOps Server (TFS) 代码库Repo管理培训
  8. Python3 Tcp未发送/接收完数据即被RST处理办法
  9. [FWT] UOJ #310. 【UNR #2】黎明前的巧克力
  10. 获取当前 服务 路径 .net