zoukankan      html  css  js  c++  java
  • bzoj1025: [SCOI2009]游戏

    置换群+dp+lcm

    #include<cstdio>
    #include<cstring>
    #include<cctype>
    #include<algorithm>
    using namespace std;
    #define rep(i,s,t) for(int i=s;i<=t;i++)
    #define dwn(i,s,t) for(int i=s;i>=t;i--)
    #define clr(x,c) memset(x,c,sizeof(x))
    #define ll long long
    int read(){
        int x=0;char c=getchar();
        while(!isdigit(c)) c=getchar();
        while(isdigit(c)) x=x*10+c-'0',c=getchar();
        return x;
    }
    const int nmax=1005;
    int prime[nmax],n,cnt;bool vis[nmax];
    ll f[nmax],g[nmax];
    void init(){
        cnt=0;
        rep(i,2,n) {
            if(!vis[i]) prime[++cnt]=i;
            rep(j,1,cnt){
                int tmp=prime[j];
                if(i*tmp>n) break;
                vis[i*tmp]=1;
                if(i%tmp==0) break;
            }
        }
        //rep(i,1,cnt) printf("%d ",prime[i]);printf("
    ");
    }
    int main(){
        n=read();init();
        f[0]=g[0]=1;
        rep(i,1,cnt){
            rep(j,0,n){
                f[j]=g[j];int tmp=prime[i];
                for(int k=tmp;k<=j;k*=tmp) f[j]+=g[j-k];
            }
            rep(j,0,n) g[j]=f[j];
            //rep(j,1,n) printf("%d ",f[j]);printf("
    ");
        }
        ll ans=0;
        rep(i,0,n) ans+=f[i];
        printf("%lld
    ",ans);
        return 0;
    }
    

      

    1025: [SCOI2009]游戏

    Time Limit: 1 Sec  Memory Limit: 162 MB
    Submit: 1968  Solved: 1276
    [Submit][Status][Discuss]

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

    Input

      包含一个整数N,1 <= N <= 1000

    Output

      包含一个整数,可能的排数。

    Sample Input

    【输入样例一】
    3
    【输入样例二】
    10

    Sample Output

    【输出样例一】
    3
    【输出样例二】
    16

    HINT

     

    Source

     
    [Submit][Status][Discuss]
  • 相关阅读:
    HTML 网页创建
    CSS3 opacity
    两数相加的和
    九九乘法表
    Linux下的Makefile初入
    linux 下定义寄存器宏 实现类似于STM32的寄存器操作
    Linux 编译与交叉编译
    linux IMX6 汇编点亮一个LED灯
    Linux基本指令与作用
    C# Task 源代码阅读(2)
  • 原文地址:https://www.cnblogs.com/fighting-to-the-end/p/5859322.html
Copyright © 2011-2022 走看看