zoukankan      html  css  js  c++  java
  • CF1392F

    虽然标签给的很难得样子,但大概就是一个构造题吧。

    如果输入已经符合,直接输出

    如果不符合,最后应该会变成一个楼梯被补上某一部分的样子

    那就先构造一个楼梯:第一层高度为(sum*2/n+1-n)/2

    然后再从头到尾扫一遍,补上去就行

    下附代码:

     1 #include<cstdio>
     2 #include<iostream>
     3 #define ll long long
     4 using namespace std;
     5 int n;
     6 ll a[1000005];
     7 int main(){
     8     scanf("%d",&n);
     9     ll sum=0;
    10     for (int i=1; i<=n; i++){
    11         scanf("%lld",&a[i]);
    12         sum+=a[i];
    13     }
    14     int flag=1;
    15     for (int i=1; i<n; i++){
    16         if (a[i+1]-a[i]>1) {
    17             flag=0;
    18             break;
    19         }
    20     }
    21     if (flag){
    22         for (int i=1; i<=n; i++)
    23             printf("%lld ",a[i]);
    24         return 0;
    25     }
    26     ll x=(sum*2/n+1-n)/2,tot=0;
    27     for (int i=1; i<=n; i++){
    28         a[i]=x-1+i;
    29         tot=tot+a[i];
    30     }
    31     for (int i=1; i<=n; i++){
    32         if (tot<sum){
    33             if (a[i]<a[i+1] || i==n) {
    34                 a[i]++;
    35                 tot++;
    36             }
    37         }
    38         else {
    39             break;
    40         }
    41     }
    42     for (int i=1; i<=n; i++)
    43         printf("%lld ",a[i]);
    44     printf("
    ");
    45     return 0;
    46 }
    View Code
  • 相关阅读:
    poj1631 LIS 裸题
    UESTC 电子科大专题训练 DP-N
    UESTC 电子科大专题训练 DP-M
    UESTC 电子科大专题训练 DP-D
    Codeforces Round #424 D
    Codeforces Round #424 C
    Codeforces Round #424 B
    Codeforces Round #424 A
    hiho一下159
    hiho一下158(hihocoder 1318)
  • 原文地址:https://www.cnblogs.com/i-caigou-TT/p/13843566.html
Copyright © 2011-2022 走看看