zoukankan      html  css  js  c++  java
  • ACM模板——康托展开

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #define _for(i,a,b) for(int i = (a);i < b;i ++)
     5 typedef long long ll;
     6 using namespace std;
     7 ll a[10003];
     8 ll rnt[10003];
     9 int vis[10003];
    10 int m,n;
    11 inline ll read()
    12 {
    13     ll ans = 0;
    14     char ch = getchar(), last = ' ';
    15     while(!isdigit(ch)) last = ch, ch = getchar();
    16     while(isdigit(ch)) ans = (ans << 1) + (ans << 3) + ch - '0', ch = getchar();
    17     if(last == '-') ans = -ans;
    18     return ans;
    19 }
    20 inline void write(ll x)
    21 {
    22     if(x < 0) x = -x, putchar('-');
    23     if(x >= 10) write(x / 10);
    24     putchar(x % 10 + '0');
    25 }
    26 int main()
    27 {
    28     n = read(),m = read();
    29     ll res = 0;
    30     _for(i,0,n)
    31         a[i] = read();
    32     
    33     _for(i,0,n)
    34     {
    35         ll tsum = 0;
    36         _for(j,0,i+1)
    37             if(a[j] <= a[i])
    38                 tsum ++;
    39         rnt[i] = a[i]-tsum;
    40     }
    41     rnt[n-1] += m;
    42     for(int i = n-1;i > 0;i--)
    43     {
    44         rnt[i-1] += rnt[i]/(n-i);
    45         rnt[i] %= n-i;
    46     }
    47     
    48     memset(vis,0,sizeof(vis));
    49     _for(i,0,n)
    50     {
    51         rnt[i] ++;
    52         int j;
    53         for(j = 1;j <= n;j ++)
    54         {
    55             if(vis[j])
    56                 continue;
    57             rnt[i] --;
    58             if(!rnt[i])    
    59                 break;
    60         }
    61         vis[j] = 1;
    62         printf("%d ",j);
    63     }
    64     return 0;
    65 }

    洛谷 P1088 火星人,代码包括康托展开,变进制数进位合法调整,康托展开逆运算

  • 相关阅读:
    Arduino-原理图标识
    python-垃圾回收机制
    利用浮力测密度
    sys模块-与python解释器交互的模块
    第十一章第二节 功率
    第十一章第一节 功
    类-描述器-把类对象方法转变为属性方式
    H5浏览器播放RTMP直播流
    如何查看某个端口被谁占用
    OBS第三方推流直播教程
  • 原文地址:https://www.cnblogs.com/Asurudo/p/11269373.html
Copyright © 2011-2022 走看看