windy学会了一种游戏。对于1到N这N个数字,都有唯一且不同的1到N的数字与之对应。最开始windy把数字按

顺序1,2,3,……,N写一排在纸上。然后再在这一排下面写上它们对应的数字。然后又在新的一排下面写上它们
对应的数字。如此反复,直到序列再次变为1,2,3,……,N。 
如: 1 2 3 4 5 6 对应的关系为 1->2 2->3 3->1 4->5 5->4 6->6 
windy的操作如下 
1 2 3 4 5 6 
2 3 1 5 4 6 
3 1 2 4 5 6 
1 2 3 5 4 6 
2 3 1 4 5 6 
3 1 2 5 4 6 
1 2 3 4 5 6 
这时,我们就有若干排1到N的排列,上例中有7排。现在windy想知道,对于所有可能的对应关系,有多少种可
能的排数。



乍一看好像是有关置换群的东西,但其实关系不大;

不过我们按照群的思路思考:

一个对应关系就是一个置换;
这个问题变成了给定一个n,
问一个n元置换群里的所有置换,他们各自的x次方等于π0的这个x,有几种可能;
我们知道一个置换是有许多循环构成的;
于是有:一个对应关系(置换)的所有循环的大小的最小公倍数即是该对应关系(置换)的x,然后一个对应关系(置换)的所有循环的大小的加和不能超过n;
这个东西好像可以用来check一个x;
——对于一个x,把她唯一分解,为,如果把pi换成sum后,结果小于n,则行数x合法,否则,不合法;
(这是在找LCM是x而加和最小的一组数——这组数里的每个数就是一个——然后check她的加和)
然后这个结论没有二分的性质,于是可以尝试枚举x然后check;
——事实上我一开始就写了这个,然后x可能枚举到很大,就炸了......
于是考虑递推一个方案数;
一个合法方案是指:找一组(质数的幂),其加和小于等于n;
(在原题里的意思是:一个合法方案是一个置换,她的每一个循环都是一个质数的幂,当然可以还剩下一些元素,就让他们子环,但是循环的大小和不能比n大)
由于每一个方案构成的x都不同,所以方案数就是答案;
代码:
#include<cstdio>
#include<cstring>
using namespace std;
const int MAXN=;
int prime[MAXN];
bool vis[MAXN];
int n,cnt;
long long f[][];
int Prime(int );
int main()
{
int i,j,k;
long long ans=;
scanf("%d",&n);
cnt=Prime(n);
f[][]=;
for(i=;i<=cnt;i++)
for(j=;j<=n;j++){
f[i][j]+=f[i-][j];
for(k=prime[i];k<=j;k*=prime[i])
f[i][j]+=f[i-][j-k];
}
for(i=;i<=n;i++)
ans+=f[cnt][i];
printf("%lld",ans);
return ;
}
int Prime(int n){
int cnt=;
memset(vis,,sizeof(vis));vis[]=;
for(int i=;i<=n;i++){
if(!vis[i])
prime[++cnt]=i;
for(int j=;j<=cnt&&i*prime[j]<=n;j++){
vis[i*prime[j]]=;
if(i%prime[j]==)
break;
}
}
return cnt;
}

P1025[SCOI2009]游戏的更多相关文章

  1. SCOI2009游戏

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

  2. BZOJ 1025 [SCOI2009]游戏

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

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

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

  4. 【BZOJ1025】[SCOI2009]游戏(动态规划)

    [BZOJ1025][SCOI2009]游戏(动态规划) 题面 BZOJ 洛谷 题解 显然就是一个个的置换,那么所谓的行数就是所有循环的大小的\(lcm+1\). 问题等价于把\(n\)拆分成若干个数 ...

  5. bzoj千题计划116:bzoj1025: [SCOI2009]游戏

    http://www.lydsy.com/JudgeOnline/problem.php?id=1025 题目转化: 将n分为任意段,设每段的长度分别为x1,x2,…… 求lcm(xi)的个数 有一个 ...

  6. AC日记——[SCOI2009]游戏 bzoj 1025

    [SCOI2009]游戏 思路: 和为n的几个数最小公倍数有多少种. dp即可: 代码: #include <bits/stdc++.h> using namespace std; #de ...

  7. 【bzoj1025】[SCOI2009]游戏

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

  8. BZOJ_1025_[SCOI2009]游戏_DP+置换+数学

    BZOJ_1025_[SCOI2009]游戏_DP+置换 Description windy学会了一种游戏.对于1到N这N个数字,都有唯一且不同的1到N的数字与之对应.最开始windy把数字按 顺序1 ...

  9. BZOJ1025: [SCOI2009]游戏

    Description windy学会了一种游戏.对于1到N这N个数字,都有唯一且不同的1到N的数字与之对应.最开始windy把数字按顺序1,2,3,……,N写一排在纸上.然后再在这一排下面写上它们对 ...

随机推荐

  1. graphviz画图与中文乱码等问题总结

    最近想写一些文档,画一些程序的逻辑图,用了vision,markdown等软件感觉不怎么好用,于是找到graphviz,这款强大的软件.下面介绍一些入门,还有自己在用的过程中遇到的问题 1.中文乱码的 ...

  2. [原创]php任务调度器 hellogerard/jobby

    目录 简介 安装 标准使用 选项 项目实践 简介 一个强大的php层面上的定时任务调度器, 无需修改系统层面的crontab 实际中, php 结合 crontab 来实现定时任务是一种经得住考验的实 ...

  3. BZOJ_3224 Tyvj 1728 普通平衡树 【离散化+权值线段树】

    一 题面 Tyvj 1728 普通平衡树 二 分析 比较明显是可以用平衡二叉搜索树(splay)做的. 用权值线段树做,前提就是要先离散化,因为权值线段树维护的值域信息. 板子. 三 AC代码 #in ...

  4. 我3年前开发的IM即时通讯一直没勇气推出,现在智能时代了,有什么可以结合的地方吗?

    我3年前开发的IM即时通讯一直没勇气推出,现在智能时代了,有什么可以结合的地方吗? 服务端采用基于XMPP协议的Openfire(当然改造了很多,也添加了很多握手协议) 客户端有做了四个版本:一个Ja ...

  5. Hibernate3.3.2_JUnit_BoforeClass不报异常的Bug处理

    假如你把配置文件写错了,myeclipse竟然不报错,只说sf空指针. <mapping class="com.oracle.hibernate.model."/> / ...

  6. Eclipse/MyEclipse按任何键,都可以提示?(最强帮手)

    说明: 一般在Eclipse ,MyEclipse代码里面,打个foreach,switch等这些,是无法得到代码提示的(不信自己试试),其他的就更不用说了,而在Microsoft Visual St ...

  7. 033-JsonUtils 工具类模板

    模板一:使用的是jackson package cn.e3mall.common.utils; import java.util.List; import com.fasterxml.jackson. ...

  8. Volley 源码解析(转)

    项目:Volley,分析者:grumoon,校对者:Trinea 本文为 Android 开源项目源码解析 中 Volley 部分项目地址:Volley,分析的版本:35ce778,Demo 地址:V ...

  9. 2-4 js基础-事件对象小结

    var e=ev||event; e.cancelBubble=true; document.documentElement   html document.body                  ...

  10. SQL常用性能相关脚本

    --调试语句性能前记得清空执行计划 每次执行需优化SQL前,带上清除缓存的设置SQL. 平常在进行SQL Server性能优化时,为了确保真实还原性能问题,我们需要关闭SQL Server自身的执行计 ...