题意:

若$a_1+a_2+\cdots+a_h=n$(任意h<=n),求$lcm(a_i)$的种类数

思路:

设$lcm(a_i)=x$,

由唯一分解定理,$x=p_1^{m_1}+p_2^{m_2}+\cdots+p_{tot}^{m_{tot}}$

设$b_i=p_i^{m_i}$,

则能组成x的和最小的数为$\sum p_i^{m_i}$

所以只要$\sum p_i^{m_i}\leq n$即可,

其中小于的时候,剩余补1即可

dp[i][j]表示选了前i个素数,他们的和为j时的方法数

代码:

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<cmath>
  5. #include<cstring>
  6. #include<string>
  7. #include<stack>
  8. #include<queue>
  9. #include<deque>
  10. #include<set>
  11. #include<vector>
  12. #include<map>
  13. #include<functional>
  14.  
  15. #define fst first
  16. #define sc second
  17. #define pb push_back
  18. #define mem(a,b) memset(a,b,sizeof(a))
  19. #define lson l,mid,root<<1
  20. #define rson mid+1,r,root<<1|1
  21. #define lc root<<1
  22. #define rc root<<1|1
  23. #define lowbit(x) ((x)&(-x))
  24.  
  25. using namespace std;
  26.  
  27. typedef double db;
  28. typedef long double ldb;
  29. typedef long long ll;
  30. typedef unsigned long long ull;
  31. typedef pair<int,int> PI;
  32. typedef pair<ll,ll> PLL;
  33.  
  34. const db eps = 1e-;
  35. const int mod = 1e9+;
  36. const int maxn = 2e3+;
  37. const int maxm = 2e6+;
  38. const int inf = 0x3f3f3f3f;
  39. const db pi = acos(-1.0);
  40.  
  41. int n, tot;
  42. int prime[ + ];
  43. int vis[ + ];
  44. ll ans, dp[ +][ + ];
  45. int main(){
  46. scanf("%d", &n);
  47. tot = ;
  48. for(int i = ; i <= ; i++){
  49. if(!vis[i])prime[++tot] = i;
  50. for(int j = ; j <= tot && i *prime[j] <= ; j++){
  51. vis[i*prime[j]] = ;
  52. if(i%prime[j]==)break;
  53. }
  54. }
  55. dp[][] = ;
  56. for(int i = ; i <= tot; i++){
  57. for(int j = ; j <= n; j++)dp[i][j] = dp[i-][j];
  58. for(int j = prime[i]; j <= n; j *= prime[i]){
  59. for(int k = ; k + j <= n; k++){
  60. dp[i][k+j] += dp[i-][k];
  61. }
  62. }
  63. }
  64. ans = ;
  65. for(int i = ; i <= n; i++)ans+=dp[tot][i];
  66. printf("%lld", ans);
  67. return ;
  68. }

BZOJ 1025 [SCOI2009]游戏 (DP+分解质因子)的更多相关文章

  1. BZOJ 1025: [SCOI2009]游戏( 背包dp )

    显然题目要求长度为n的置换中各个循环长度的lcm有多少种情况. 判断一个数m是否是满足题意的lcm. m = ∏ piai, 当∑piai ≤ n时是满足题意的. 最简单我们令循环长度分别为piai, ...

  2. BZOJ 1025 [SCOI2009]游戏

    1025: [SCOI2009]游戏 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1533  Solved: 964[Submit][Status][ ...

  3. [BZOJ 1025] [SCOI2009] 游戏 【DP】

    题目链接:BZOJ - 1025 题目分析 显然的是,题目所要求的是所有置换的每个循环节长度最小公倍数的可能的种类数. 一个置换,可以看成是一个有向图,每个点的出度和入度都是1,这样整个图就是由若干个 ...

  4. BZOJ 1025: [SCOI2009]游戏 [置换群 DP]

    传送门 题意:求$n$个数组成的排列变为升序有多少种不同的步数 步数就是循环长度的$lcm$..... 那么就是求$n$划分成一些数几种不同的$lcm$咯 然后我太弱了这种$DP$都想不出来.... ...

  5. [bzoj 1025][SCOI2009]游戏(DP)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1025 分析:首先这个问题等价于A1+A2+……Ak=n,求lcm(A1,A2,……,Ak)的种 ...

  6. bzoj 1025 [SCOI2009]游戏(置换群,DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1025 [题意] 给定n,问1..n在不同的置换下变回原序列需要的不同排数有多少种. [ ...

  7. bzoj 1025: [SCOI2009]游戏【数学+dp】

    很容易发现行数就是lcm环长,也就是要求和为n的若干数lcm的个数 有结论若p1^a1+p2^a2+...+pm^am<=n,则ans=p1^a1p2^a2..*pm^am是n的一个可行答案.( ...

  8. BZOJ 1025 SCOI2009 游戏 动态规划

    标题效果:特定n.行定义一个替代品1~n这种更换周期发生后,T次要(T>0)返回到原来的顺序 找到行的所有可能的数 循环置换分解成若干个,然后行位移数是这些周期的长度的最小公倍数 因此,对于一些 ...

  9. UVA 10780 Again Prime? No Time. 分解质因子

    The problem statement is very easy. Given a number n you have to determine the largest power of m,no ...

随机推荐

  1. Sorted 内置函数的排序使用

    Sorted 内置函数的排序使用 Sorted 排序列表 1.倒序对列表进行排序 # 对列表进行降序序排序 list = [1,3,4,23,6,7] list = sorted(list,rever ...

  2. 应届生/社招面试最爱问的几道Java基础问题

    本文已经收录自笔者开源的 JavaGuide: https://github.com/Snailclimb ([Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识)如果觉得不错 ...

  3. 如何在ArcGIS中恢复注记文字

    文字标注是地图上一种特殊的视觉元素,可通过文字表达图形符号难以说明的地图内容,它与图形符号结合在一起存在于地图上,是关乎地图构图美的关键因素之一. MapGIS软件下子图对象和注释对象统统保存在点文件 ...

  4. 【设计模式】 (2)关于UML

    UML -- Unified Modeling Lanaguage(统计建模语言),是一种软件系统分析和设计的语言工具,他用于帮助软件开发人员进行思考和记录思路的结果. UML本身是一套符号的规定,就 ...

  5. 史上最简约的vi教程,复制和粘贴

    上一篇博客,讲了"新手"如何"入门"vi,解决了"两眼一抹黑"的情况.知道在vi下如何进行基本的操作,如部署在Linux下的项目,修改配置文 ...

  6. Postman post csrf_token

    1.填入代码 var csrf_token = postman.getResponseCookie("csrftoken").value postman.clearGlobalVa ...

  7. 2.Markdown学习

    Makrdown学习: 1.推荐编辑器: Typora [点击跳转](https://www.typora.io/) 2.标题: #空格一级标题名 ##空格二级标题名 3.字体: 粗体:** ** H ...

  8. 异数OS 星星之火(一)-- 异数OS-织梦师云 用户使用手册

    . 异数OS 星星之火(一)– 异数OS-织梦师云 用户使用手册 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 6 ...

  9. Thematic002.字符串专题

    目录 Trie字典树 KMP AC自动机 Manacher 回文自动机 后缀数组 后缀自动机 Trie字典树 概念 我们先来看看什么是Trie字典树 可以发现,这棵树的每一条边都有一个字符 有一些点是 ...

  10. # 团队项目-Beta冲刺2(七个小矮人)

    团队项目-Beta冲刺2(七个小矮人) 一.格式描述 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScien ...