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

     

  • 相关阅读:
    Atcoder Regular Contest 092 A 的改编
    AtCoder Regular Contest 092 B Two Sequences
    hihoCoder #1695 公平分队II
    redis基础知识
    mongodb进阶
    mongodb基础知识
    memcached基础知识
    利用多进程获取猫眼电影top100
    分析AJAX抓取今日头条的街拍美图并把信息存入mongodb中
    selenium的使用技巧及集成到scrapy
  • 原文地址:https://www.cnblogs.com/lqsukida/p/11424478.html
Copyright © 2011-2022 走看看