Description

  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想知道,对于所有可能的对应关系,有多少种可能的排数。

  题意是让我们求回归到原序列的置换次数,也就是对于这个置换的每一个循环大小的最小公倍数

  如(123)(45)(6)

  对于第一个循环回归需要3x次(x代表任意自然数),第二个循环需要2x次,第三个循环需要x次

  显然对于这样的置换答案是6次

  有多少种可能的排数,也就是这个最小公倍数有多少种可能..?

  看起来比较奇怪的问题...

  我们用一个序列来表示最小公倍数

  2  3   5   7   11...997

  x1 x2  x3  x4  x5...x168

  最小公倍数就是2^x1*3^x2*5^x3...997^x168(说白了就是质因数分解>w<)

  对于每一个循环,它的大小质因数分解之后对于每个质因子的系数都<=上面的序列

  然后原问题就是满足题意的x1,x2..x168有多少种

  我们来考虑怎样才会不满足题意...

  首先x1,x2..x168再小也无所谓,因为就算全为0也是满足题意的,剩下的都可以用1来补全

  显然对于这些x最小的n就是2^x1+3^x2...+997^x168

  因为一旦2出现了x1次,说明一定有一个循环的个数中含有2^x1这个因子,我们令其中一个等于这个

  为了使n最小化,其它都不含2这个因子

  另外加法比乘法代价小这个显然...

  也就是说对于x序列的限制也就是2^x1+3^x2...997^x168<=n

  非常眼熟...非常简单的01背包...

  

 /**************************************************************
Problem: 1025
User: mjy0724
Language: Pascal
Result: Accepted
Time:112 ms
Memory:8236 kb
****************************************************************/ program bzoj1025;
const maxn=;
var n,ans:int64;
i,j,k:longint;
p:array[-..maxn]of int64;
f:array[-..maxn,-..maxn]of int64;
vis:array[-..maxn]of boolean; procedure Euler;
var i,j:longint;
begin
fillchar(vis,sizeof(vis),true);
p[]:=;
for i:= to n do
begin
if vis[i] then
begin
inc(p[]);
p[p[]]:=i;
end;
for j:= to p[] do
begin
if i*p[j]>n then break;
vis[i*p[j]]:=false;
if i mod p[j]= then break;
end;
end;
end; begin
readln(n);
Euler;
fillchar(f,sizeof(f),);
f[,]:=;
for i:= to p[] do
for j:= to n do
begin
f[i][j]:=f[i-][j];
k:=p[i];
while k<=j do
begin
inc(f[i,j],f[i-,j-k]);
k:=k*p[i];
end;
end;
ans:=;
for i:= to n do inc(ans,f[p[],i]);
writeln(ans);
end.

[BZOJ1025] [SCOI2009]游戏 解题报告的更多相关文章

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

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

  2. BZOJ1025: [SCOI2009]游戏

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

  3. NOIP2008 普及组T3 传球游戏 解题报告-S.B.S.

    题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同 ...

  4. SDOI2017 BZOJ 4820 硬币游戏 解题报告

    写在前面 此题网上存在大量题解,但本人太菜了,看了不下10篇均未看懂,只好自己冷静分析了.本文将严格详细地论述算法(避免一切意会和玄学),因此可能会比其它题解更加理论化一些,希望能对像我一样看了其它题 ...

  5. 洛谷 P4705 玩游戏 解题报告

    P4705 玩游戏 题意:给长为\(n\)的\(\{a_i\}\)和长为\(m\)的\(\{b_i\}\),设 \[ f(x)=\sum_{k\ge 0}\sum_{i=1}^n\sum_{j=1}^ ...

  6. [HEOI2016/TJOI2016]游戏 解题报告

    [HEOI2016/TJOI2016]游戏 看起来就是个二分图匹配啊 最大化匹配是在最大化边数,那么一条边就代表选中一个坐标内的点 但是每一行不一定只会有一个匹配 于是把点拆开,按照'#'划分一下就好 ...

  7. 洛谷 P1129 [ZJOI2007]矩阵游戏 解题报告

    P1129 [ZJOI2007]矩阵游戏 题目描述 小\(Q\)是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个\(N*N\)黑白方阵进行(如同国际象棋一般 ...

  8. 洛谷 P2059 [JLOI2013]卡牌游戏 解题报告

    P2059 [JLOI2013]卡牌游戏 题意 有\(n\)个人玩约瑟夫游戏,有\(m\)张卡,每张卡上有一个正整数,每次庄家有放回的抽一张卡,干掉从庄家起顺时针的第\(k\)个人(计算庄家),干掉的 ...

  9. 洛谷 P1057 传球游戏 解题报告

    P1057 传球游戏 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹 ...

随机推荐

  1. 解决上传app store卡在正在通过iTunes Store鉴定

    打开终端输入代码即可 cd ~ mv .itmstransporter/ .old_itmstransporter/ "/Applications/Xcode.app/Contents/Ap ...

  2. EF使用报错说缺少引用

            在程序中已经引用了EF,也引用了System.Data,但是一起报这个错误:        在类前面也已经写了 using System.Data.Entity,百思不得其解,最后才发 ...

  3. Bug是一种财富-------研发同学的错题集、测试同学的遗漏用例集

    此文已由作者王晓明授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 各位看官,可能看到标题的你一定认为这是一篇涉嫌"炒作"的文章,亦或是为了吸引眼球而起的标 ...

  4. resetroot_169route_python3(用于ubuntu16.04)

    #!/usr/bin/python3 import os import sys import json import urllib.request import urllib.parse import ...

  5. java设计模式之模版方法模式以及在java中作用

    模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有 ...

  6. 英特尔CEO科再奇:尚未发现通过漏洞获取用户数据的行为

    1月9日消息,英特尔CEO科再奇在美国西部时间1月8日举行的2018年CES中发表主题演讲,他在开场时面向产业界谈到了最近报道的安全研究发现.科再奇表示:“在我们开始之前,我想借此机会感谢整个行业,为 ...

  7. centos7.4内核从3.10升级到4.14详细步骤

    由于我们的docker学习中的Overlay需要内核版本在3.12+,所以在安装完centos7.4之后要进行内核升级,下面是升级步骤:1.导入keyrpm --import https://www. ...

  8. Daily Scrum02 12.02

    今天是黑色星期一,虽然大家最近被各种大作业压得身心疲惫,但是团队的凝聚力战胜了一切不快. 看看同志们今天的战绩,是不是又有一种充实感油然而生呢??? By Ryan Mao who? Today? T ...

  9. [C/C++] 深拷贝和浅拷贝

    ·默认拷贝构造函数可以完成对象的数据成员值简单地复制-----浅拷贝 ·对象的数据资源是由指针指示的堆时,默认拷贝构造函数仅作指针值的复制,需要显式定义拷贝构造函数-----深拷贝 首先定义几个点: ...

  10. SQL 取数值小数后两位,但不四舍五入

    select round('1.67789',2,1) /* 1.67*/