• poj 1721 CARDS(置换群)


    题目链接:poj 1721 CARDS

    题意:

    看了半天才看懂,就是一次置换为b[i]=a[a[i]],a[i]=b[i]。

    现在已经知道了置换了多少次和当前的序列,问你最原来的序列为

    题解:

    将这个置换的循环次数ans找出来,再做ans-s次就行了。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #define F(i,a,b) for(int i=a;i<=b;++i)
     5 using namespace std;
     6 #define ___ freopen("c:\code\in.txt","r",stdin);
     7 const int N=1010;
     8 
     9 int n,s,a[N],init[N],b[N];
    10 
    11 int Is_same()
    12 {
    13     F(i,1,n)if(a[i]!=init[i])return 0;
    14     return 1;
    15 }
    16 
    17 int main()
    18 {
    19     while(~scanf("%d%d",&n,&s))
    20     {
    21         F(i,1,n)scanf("%d",init+i),a[i]=init[i];
    22         int cnt=0;
    23         while(1)
    24         {
    25             cnt++;
    26             F(i,1,n)b[i]=a[a[i]];
    27             F(i,1,n)a[i]=b[i];
    28             if(Is_same())break;
    29             
    30         }
    31         s=s%cnt,cnt-=s;
    32         F(i,1,cnt)
    33         {
    34             F(j,1,n)b[j]=a[a[j]];
    35             F(j,1,n)a[j]=b[j];
    36         }
    37         F(i,1,n)printf("%d
    ",a[i]);
    38     }
    39     return 0;
    40 }
    View Code
  • 相关阅读:
    C# CefSharp
    C# CRC16 modbus
    C++ 调试信息输出
    运行elasticsearch.bat出错
    Windows下NodeJS安装与npm环境变量配置
    Rescue
    Catch That Cow
    7.3.1 Swagger 文档生成工具
    3.并发处理
    2.集合处理
  • 原文地址:https://www.cnblogs.com/bin-gege/p/7074615.html
Copyright © 2020-2023  润新知