zoukankan      html  css  js  c++  java
  • $AT2163 Median Pyramid Easy$ 构造

    正解:构造

    解题报告:

    传送门$QwQ$

    考虑如果有两个相邻格子是相同数字那么它们以上这两列就都会是这列数字(显然$QwQ$?

    所以考虑只要构造出第$n-1$行的中心和中心右侧($or$左侧一样的$QwQ$都等于$x$,其他格子随便填就成鸭$QwQ$

    然后就做完辣?记得分类讨论几个特殊情况嗷$QwQ$

    $over$

     

    #include<bits/stdc++.h>
    using namespace std;
    #define il inline
    #define gc getchar()
    #define mp make_pair
    #define P pair<int,int>
    #define ri register int
    #define rb register bool
    #define rc register char
    #define t(i) edge[i].to
    #define w(i) edge[i].wei
    #define rp(i,x,y) for(ri i=x;i<=y;++i)
    #define my(i,x,y) for(ri i=x;i>=y;--i)
    #define e(i,x) for(ri i=head[x];i;i=edge[i].nxt)
    
    const int N=2e5+10;
    int n,x,a[N],tmp;
    bool vis[N];
    
    il int read()
    {
        rc ch=gc;ri x=0;rb y=1;
        while(ch!='-' && (ch<'0' || ch>'9'))ch=gc;
        if(ch=='-')ch=gc,y=0;
        while(ch>='0' && ch<='9')x=(x<<1)+(x<<3)+(ch^'0'),ch=gc;
        return y?x:-x;
    }
    
    int main()
    {
        n=read();x=read();if(x==1 || x==n*2-1)return printf("No
    "),0;printf("Yes
    ");
        if(x==2){a[n]=2;a[n+1]=1;tmp=2;n=n*2-1;rp(i,1,n)if(!a[i])a[i]=++tmp;rp(i,1,n)printf("%d
    ",a[i]);return 0;}
        a[n]=x;a[n+1]=x+1;a[n-1]=x-1;a[n+2]=x-2;vis[x]=vis[x+1]=vis[x-1]=vis[x-2]=1;
        tmp=1;n=n*2-1;rp(i,1,n)if(!a[i]){while(vis[tmp])++tmp;a[i]=tmp;vis[tmp]=1;}rp(i,1,n)printf("%d
    ",a[i]);
        return 0;
    }
    View Code

     

  • 相关阅读:
    django-based blog- mezzanine
    echo "hello" | nc -4t -w1 localhost 8001
    boost静态链接的问题 -lgcc_s
    Vim 新用法
    解决docker中DNS查询的问题
    centos 升级GCC/G++
    enable c++11 in autoconf in fucking gnu auto tools
    Fucking "pkg-config not found"
    在CentOS 6.X 上面安装 Python 2.7.X
    redis sentinel 配置
  • 原文地址:https://www.cnblogs.com/lqsukida/p/11424478.html
Copyright © 2011-2022 走看看