[BZOJ1025][SCOI2009]游戏(置换+背包dp+数学相关)
来源:互联网 发布:neta软件百度云 编辑:程序博客网 时间:2024/05/18 02:23
题目描述
传送门
题解
刚开始各种傻逼→_→
首先这个题是让将1..n经过若干次置换变回去,然后求置换次数的方案
可以发现次数即为所有循环节的最小公倍数
那么问题就转化为了将n拆成若干个数求最小公倍数的方案
首先筛出n范围内的所有的质数,可以发现从这些质数里选出一些质数(包括质数的幂次方),使总和小于等于n,然后不够的位置填1,这样的最小公倍数是一定互不相同的,并且一定有一种等价的有合数的方案。那么这是一个背包问题
但是还有一个问题就是,2和4不能同时选,因为一个是另一个的幂次方,这样最小公倍数就不对了。所以这是一个分组背包问题,同一个组内的只能选一个
代码
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define LL long long#define N 1005int n;int p[N],prime[N],bag[N][20],cnt[N];LL ans,f[N];void get_p(){ for (int i=2;i<=n;++i) { if (!p[i]) prime[++prime[0]]=i; for (int j=1;j<=prime[0]&&i*prime[j]<=n;++j) { p[i*prime[j]]=1; if (i%prime[j]==0) break; } } for (int i=1;i<=prime[0];++i) { int now=prime[i]; bag[i][cnt[i]=1]=now; while (now*prime[i]<=n) { now*=prime[i]; bag[i][++cnt[i]]=now; } }}int main(){ scanf("%d",&n); get_p(); f[0]=1LL; for (int i=1;i<=prime[0];++i) for (int j=n;j>=0;--j) for (int k=1;k<=cnt[i];++k) if (j>=bag[i][k]) f[j]+=f[j-bag[i][k]]; for (int i=0;i<=n;++i) ans+=f[i]; printf("%lld\n",ans);}
0 0
- [BZOJ1025][SCOI2009]游戏(置换+背包dp+数学相关)
- BZOJ1025 [SCOI2009]游戏(置换+数论+背包)
- bzoj1025 [SCOI2009]游戏(置换+分组背包)
- [BZOJ1025]SCOI2009游戏|置换的循环|DP
- Bzoj1025:[SCOI2009]游戏:置换群+dp
- bzoj1025[SCOI2009]游戏 DP 置换 筛法
- bzoj1025: [SCOI2009]游戏[数学分析+背包dp]
- [BZOJ1025][SCOI2009]游戏 && dp
- 【bzoj1025】【SCOI2009】【游戏】【dp】
- [DP] BZOJ1025: [SCOI2009]游戏
- 【BZOJ1025】[SCOI2009]游戏【计数DP】【质因数分解】【置换】
- BZOJ1025(SCOI2009)[游戏]--线性筛+DP
- BZOJ1025: [SCOI2009]游戏
- BZOJ1025 [SCOI2009]游戏
- [BZOJ1025][SCOI2009]游戏
- BZOJ1025 SCOI2009游戏
- BZOJ1025[SCOI2009]游戏
- BZOJ1025: [SCOI2009]游戏
- BZOJ3307——雨天的尾巴
- parasoft Jtest 使用教程:单元测试和用例生成详细解析
- heck the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTI
- ASM 翻译系列第二弹:ASM 12C 版本新特性
- order_by_、group_by_、having的用法区别
- [BZOJ1025][SCOI2009]游戏(置换+背包dp+数学相关)
- LoadRunner 11 安装及破解
- mysql 使用 group by和 order by 时extra 的执行情况
- java regular expression
- 处理redis连接数过多
- 放大器指标:1db压缩点
- 网络爬虫讲解(附java实现的实例)
- HttpModule与HttpHandler详解
- homebrew命令