Luogu P4161 [SCOI2009]游戏 数论+DP
ywy神犇太巨辣!!一下就明白了!!
题意:求$lcm(a_1,a_2,...,a_k)$的种类,其中$\Sigma\space a_i <=n$,$a_i$相当于环长
此处的$DP$,相当于是在求$lcm(a_1,a_2,...,a_k)$按算术基本定理分解的式子的种类。
感性理解一下,一堆>=2的数,加起来一定比乘起来小,但是我们又要保证他们互质(否则就亏了,不如同时去掉gcd),所以就每个数就是一个质数的幂。
所以这一堆数大致就是形如$p_i^{k_i}$这种样子的
所以可以背包转移:把每个质数当做物品,注意转移时的顺序,用质数$p$转移时不能访问已经经过$p$转移过的(类似01背包的倒序循环),否则不满足互质;
#include<cstdio>
#include<iostream>
#define R register int
const int N=;
using namespace std;
int n,cnt,pri[N];
bool v[N];
long long f[N],ans;
inline void PRI() {
for(R i=;i<=n;++i) {
if(!v[i]) pri[++cnt]=i;
for(R j=;j<=cnt&&i*pri[j]<=n;++j) {
v[i*pri[j]]=true; if(i%pri[j]==) break;
}
}
}
signed main() {
scanf("%d",&n); f[]=; PRI();
for(R i=;i<=cnt;++i) for(R j=n;j>=;--j)
for(R k=pri[i];k<=j;k*=pri[i]) f[j]+=f[j-k];
for(R i=;i<=n;++i) ans+=f[i]; printf("%lld\n",ans);
}
2019.05.25
Luogu P4161 [SCOI2009]游戏 数论+DP的更多相关文章
- luogu P4161 [SCOI2009]游戏
传送门 我们发现整个大置换中,会由若干形如\((a_1\rightarrow a_2,a_2\rightarrow a_3,...a_{n-1}\rightarrow a_n,a_n\rightarr ...
- BZOJ 1025: [SCOI2009]游戏( 背包dp )
显然题目要求长度为n的置换中各个循环长度的lcm有多少种情况. 判断一个数m是否是满足题意的lcm. m = ∏ piai, 当∑piai ≤ n时是满足题意的. 最简单我们令循环长度分别为piai, ...
- LG P4161 [SCOI2009]游戏/LG P6280 [USACO20OPEN]Exercise G
Description(P4161) windy学会了一种游戏. 对于1到N这N个数字,都有唯一且不同的1到N的数字与之对应. 最开始windy把数字按顺序1,2,3,……,N写一排在纸上. 然后再在 ...
- Luogu P4158 [SCOI2009]粉刷匠(dp+背包)
P4158 [SCOI2009]粉刷匠 题意 题目描述 \(windy\)有\(N\)条木板需要被粉刷.每条木板被分为\(M\)个格子. 每个格子要被刷成红色或蓝色. \(windy\)每次粉刷,只能 ...
- [BZOJ 1025] [SCOI2009] 游戏 【DP】
题目链接:BZOJ - 1025 题目分析 显然的是,题目所要求的是所有置换的每个循环节长度最小公倍数的可能的种类数. 一个置换,可以看成是一个有向图,每个点的出度和入度都是1,这样整个图就是由若干个 ...
- BZOJ 1025: [SCOI2009]游戏 [置换群 DP]
传送门 题意:求$n$个数组成的排列变为升序有多少种不同的步数 步数就是循环长度的$lcm$..... 那么就是求$n$划分成一些数几种不同的$lcm$咯 然后我太弱了这种$DP$都想不出来.... ...
- P4161 [SCOI2009]游戏
传送门 首先这题的本质就是把\(n\)分成若干个数的和,求他们的\(lcm\)有多少种情况 然后据说有这么个结论:若\(p_1^{c_1}+p_2^{c_2}+...+p_m^{c_m}\leq n\ ...
- bzoj1025 [SCOI2009]游戏——因数DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1025 这篇博客写得真好呢:https://www.cnblogs.com/phile/p/4 ...
- [bzoj 1025][SCOI2009]游戏(DP)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1025 分析:首先这个问题等价于A1+A2+……Ak=n,求lcm(A1,A2,……,Ak)的种 ...
随机推荐
- dubbo monitor simple 监控原理分析
监控机制: 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心.监控中心负责统计各服务调用次数,调用时间等. 监控元数据存储目录结构: --dubbo.jetty ...
- AngularJS directive简述
转自:http://segmentfault.com/q/1010000002400734 官方API:http://docs.angularjs.cn/api/ng/service/$compile ...
- IntelliJ手记
1. 配置JDK:File - Project Structure - SDKs,点击“+”即可: 2. 配置远程调试,对于azkaban的远程调试,在azkaban-solo-start.sh里面的 ...
- jenkins pipline 用法收集
1.下载多个项目 node { stage('clone'){ dir('test1'){ checkout([$class: 'GitSCM', branches: [[name: '*/maste ...
- 问题15:如何判断字符串a是否以字符串b开头或结尾
方法一:使用正则表达式的^和$实现 '^000':表示,只匹配字符串的开头,若开头是 '000' ,则返回 ['000'] : '000$':表示,只匹配字符串的结尾,若结尾是 '000' ,则返回 ...
- css基础知识二
1.盒模型: 实际宽度:外边距*2+内边距*2+边框*2+内容宽度(注意这点,可解决界面元素轻微浮动问题,如hover有边框,以前没的时候会有轻微浮动) 作用:他规定了网页元素如何显示以及其相互关系 ...
- 发布倒计时!JDK11为我们带来哪些新特性?
今年7月底,JDK11已经进入了Rampdown Phase Two阶段,这标志着该版本所有特性已经被冻结,不会有新的JEP会加入版本中. 这一阶段将会修复P1–P2级BUG,之后,JDK11预定于今 ...
- 请问两个div之间的上下距离怎么设置
转自:https://zhidao.baidu.com/question/344630087.html 楼上说的是一种方法,yanzilisan183 <div style="marg ...
- linux日常管理-top动态查看负载
动态查看负载命令,具体哪个程序,哪个进程造成的系统负载. top 回车查看 3秒更新一次 第一行和uptime和w第一行显示的一样. CPU使用率,us sy 内存相关,Mem 一共多少,使用了多少, ...
- 加减 script函数初识
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...