• 2017-2018 ACM-ICPC, NEERC, Southern Subregional Contest, qualification stage (Online Mirror, ACM-ICPC Rules, Teams Preferred) C C. Sum of Nestings


    题意:给出n个括号,问是否能让值和为k,一个括号的值为这个括号里面有多少个完整的括号

    思路:我们可以求出最大价值,即(1+2.....+(n-1)),如果他在某个地方不完整的括号,就看他有多少个剩余的,放在那个括号里,例如:

               10   42       (1+2+3+4+5+6+7+8)=36,(((((((())))))))就不能添加第9个括号了,那剩下的6个,我们就可以在倒数第6个那加上括号,那剩下的6个就每个多加一个了,(((((((())()))))))

    http://codeforces.com/contest/847/problem/C

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const int N=200005;
     5 
     6 
     7 int main(){
     8      ll n,m;
     9      cin>>n>>m;
    10      ll Max=n*(n-1)/2;
    11      if(m>Max){
    12         cout<<"Impossible"<<endl;return 0;
    13      }
    14      ll sum=0,s=1;
    15      int cnt;
    16      for(int i=1;;i++){
    17         if(sum+i>m) {
    18             cnt=m-sum;break;
    19         }
    20         sum+=i;s++;
    21      }
    22 
    23      for(int i=1;i<=s;i++){
    24         printf("(");
    25         if(i==cnt) printf("()");
    26      }
    27      for(int i=1;i<=s;i++)
    28         printf(")");
    29      if(cnt) s++;
    30      for(int i=1;i<=n-s;i++)
    31         printf("()");
    32      cout<<endl;
    33 }
  • 相关阅读:
    数据结构_队列和滑动窗口
    数据结构_栈和单调栈
    数据结构_链表及邻接表
    JavaSE多线程
    AppExtension总结
    FlutterBloc 2.1.1迁移至6.0.6
    iOS通知总结
    Provider 4.3.2+2 f
    Fish-Redux 研究
    王道考研复习-操作系统-内存管理(三)
  • 原文地址:https://www.cnblogs.com/hhxj/p/7563085.html
Copyright © 2020-2023  润新知