1025: [SCOI2009]游戏 线性筛素数+DP
来源:互联网 发布:mysql 1054 编辑:程序博客网 时间:2024/05/22 06:41
题目即将N进行拆分,求各部分的LCM有几种。
我们考虑对于一个可能的LCM的值,如果这个值可以由不互质的几部分得到,那么它一定可以由互质的几部分得到。
那么就可以先线性筛出素数。然后把每个素数的k(k=1,2,3…)看成物品往背包里装,就成了简单DP啦。
#include<iostream>#include<cstdio>#define ll long long using namespace std;int prime[1005];int n;ll f[1005][1005],ans;bool flag[1005];inline void get_prime(){ for (int i=2;i<=n;i++) { if (!flag[i]) prime[++prime[0]]=i; for (int j=1;j<=prime[0]&&i*prime[j]<=n;j++) { flag[i*prime[j]]=1; if (i%prime[j]==0) break; } }}int main(){ scanf("%d",&n); get_prime(); f[0][0]=1; for (int i=1;i<=prime[0];i++) { for (int j=0;j<=n;j++) f[i][j]=f[i-1][j]; for (int j=0;j<=n;j++) for (int k=prime[i];k<=j;k*=prime[i]) f[i][j]+=f[i-1][j-k]; } for (int i=0;i<=n;i++) ans+=f[prime[0]][i]; cout << ans << endl; return 0;}
0 0
- 1025: [SCOI2009]游戏 线性筛素数+DP
- BZOJ1025(SCOI2009)[游戏]--线性筛+DP
- 【BZOJ 1025】[SCOI2009]游戏 置换+dp
- [BZOJ1025][SCOI2009]游戏 && dp
- 【bzoj1025】【SCOI2009】【游戏】【dp】
- SCOI2009[游戏] dp
- [DP] BZOJ1025: [SCOI2009]游戏
- BZOJ 1025: [SCOI2009]游戏
- BZOJ 1025: [SCOI2009]游戏
- 【bzoj 1025】: [SCOI2009]游戏
- 【BZOJ 1025】 [SCOI2009]游戏
- BZOJ 1025 [SCOI2009]游戏
- 1025: [SCOI2009]游戏
- 【BZOJ 1025】[SCOI2009]游戏
- BZOJ 1025 [SCOI2009]游戏
- bzoj1025: [SCOI2009]游戏[数学分析+背包dp]
- [BZOJ1025]SCOI2009游戏|置换的循环|DP
- Bzoj1025:[SCOI2009]游戏:置换群+dp
- 【JS学习笔记】数组
- Notification与应用启动
- Visual Studio 2008 可扩展性开发(三):Add-In运行机制解析(下)
- MIPS GCC 嵌入式汇编
- Matrix Mathematics
- 1025: [SCOI2009]游戏 线性筛素数+DP
- 1046. Shortest Distance (20)
- Shiro简介
- Visual Studio 2008 可扩展性开发(四):添加新的命令
- lighttpd-1.4.39 : fdevents and Event Handler
- LeetCode Valid Sudoku
- oracle数据库学习(二)
- sklearn sparse matrix 的构造方法
- HDOJ 1005 Number Sequence