zoukankan      html  css  js  c++  java
  • 牛客 安徽大学新生赛 G

                传送门::https://ac.nowcoder.com/acm/contest/2720/G

    题意::构造一个字符串 (串长  <=1e9 ) 当且仅包含 n个  “ AHUICPC ”  子序列 且字符串长度 <=1e5

      思路::

    当你在串 ("UICPC")最前面 每添加1个”AH“,总共会构成  ( i +1 ) * i / 2 个子序列 ,这样就是可以构造最优解,使串尽量最短 ;

    当然为啥是构造长度为2的最优了,同样的道理 当构造长度为3 的时候,虽然可以构造出那麽多子序列,但是长度会炸;

    举个例子 “AHAHAHAH   UICPC” 你会发现 子序列下总和  4 + 3 + 2 +1 =10 (等差求和)

    因此我们首先要找出最大的  i   满足  ( i + 1 ) * i /2 < n ,然后对于多出的部分 k 我们是不是可以 找到一个位置(也就是构造的第 k 个“AH”位置前加上一个“A”) 满足 用它为起始位置刚好构造出 k 个子序列,显然只花费了 一个 单位长度

     1 #include<bits/stdc++.h>
     2 #define ll long long
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     int n;
     8     scanf("%d",&n);
     9     if(n==1){
    10         printf("AHUICPC");return 0;
    11     }
    12     int k;
    13     for(int i=1;;i++){
    14         if((ll)(i+1)*i/2<(ll)n){
    15             k=i;
    16         }
    17         else{
    18             break;
    19         }
    20     }
    21     int t=(n-(k+1)*k/2);
    22     for(int i=1;i<=t;i++){
    23         if(i==t-k+1){
    24             printf("AAH");
    25         }
    26         else{
    27             printf("AH");
    28         }
    29     }
    30     printf("UICPC");
    31     return 0;
    32 }

     不足之处请指出!!!

    纵使单枪匹马,也要勇闯天涯
  • 相关阅读:
    计算机的运算方法
    干货 Elasticsearch 知识点整理 一
    深入理解 Spring finishBeanFactoryInitialization
    Git 学习笔记
    深入理解 Mybatis
    深入理解 MyBatis 启动流程
    MyBatis 开发手册
    深入理解SpringMvc 启动流程
    深度长文回顾web基础组件
    快速排序
  • 原文地址:https://www.cnblogs.com/sj-gank/p/11972620.html
Copyright © 2011-2022 走看看