zoukankan      html  css  js  c++  java
  • Ozon Tech Challenge 2020 (Div.1 + Div.2, Rated, T-shirts + prizes!)E(构造)

    从1~n构造显然平衡数最大,先尽可能1~i构造,再补一个数填平或者不补,再用大数把数字补全。

     1 #define HAVE_STRUCT_TIMESPEC
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4 int a[5007];
     5 int main(){
     6     ios::sync_with_stdio(false);
     7     cin.tie(NULL);
     8     cout.tie(NULL);
     9     int n,m;
    10     cin>>n>>m;
    11     int sum=0,pos=0;
    12     int flag=0;
    13     for(int i=1;;++i){
    14         if(i>n){
    15             flag=1;
    16             if(sum==m)
    17                 flag=2;
    18             break;
    19         }
    20         sum+=(i-1)/2;
    21         pos=i;
    22         if(sum>m){
    23             sum-=(i-1)/2;
    24             break;
    25         }
    26     }
    27     if(flag==1){
    28         cout<<-1;
    29         return 0;
    30     }
    31     if(flag!=2)
    32         --pos;
    33     for(int i=1;i<=pos;++i)
    34         a[i]=i;
    35     int rem=m-sum;
    36     if(rem>0){
    37         int temp=pos/2;
    38         a[pos+1]=pos+1+(temp-rem)*2;
    39     }
    40     if(pos+1<n){
    41         int st=pos+2;
    42         if(rem==0)
    43             --st;
    44         int mx=1e9;
    45         int cha=a[st-1]+1;
    46         for(int i=n;i>=st;--i){
    47             a[i]=mx;
    48             mx-=cha;
    49         }
    50     }
    51     else if(rem==0&&pos+1==n)
    52         a[n]=1e9;
    53     for(int i=1;i<=n;++i)
    54         cout<<a[i]<<" ";
    55     return 0;
    56 }
  • 相关阅读:
    P2610 [ZJOI2012]旅游
    P2323 [HNOI2006]公路修建问题
    P3629 [APIO2010]巡逻
    ARC059F
    AGC004D Teleporter
    p3203 弹飞绵羊
    bzoj5450 轰炸
    bzoj4313 三维积木
    cf123E Maze
    bzoj4423 [AMPPZ2013]Bytehattan
  • 原文地址:https://www.cnblogs.com/ldudxy/p/12411275.html
Copyright © 2011-2022 走看看