#282(div2) C. Treasure

题意:#可以变换成>=1个‘)‘,问每个#可以变换成多少个‘)‘。使得整个字符串正常,否则输出-1。

思路:我们可以先把可以消掉的()消掉,再判断下比如#在新的字符串最前面或者(在最后面是不行的,然后我们让前面的#都变成一个),那么最后一个可以变成剩下的。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3
 4 int b[100005];
 5 int main(){
 6     string s;
 7     cin>>s;
 8     int l=0;
 9     if(s[l]==‘)‘||s[s.size()-1]==‘(‘) {
10         cout<<-1<<endl;return 0;
11     }
12     int s1=0,s2=0,s3=0;
13     for(int i=0;i<s.size();i++){
14         if(s[i]==‘(‘) {
15             b[l++]=i;
16             s1++;
17         }
18         else if(s[i]==‘)‘) {
19                 s2++;
20                 l--;
21                 if(l==-1) {
22                     printf("-1\n");return 0;
23                 }
24                 s[b[l]]=‘%‘;s[i]=‘%‘;s3++;
25         }
26     }
27     int s4=s.size()-s1-s2;
28     s1-=s3;
29     if(s1<s4){
30         cout<<-1<<endl;return 0;
31     }
32     int sum=0;
33     for(int i=s.size();i>=0;i--){
34         if(s[i]==‘(‘) {
35             cout<<-1<<endl;return 0;
36         }
37         else if(s[i]==‘#‘) {
38                 l=i;
39                 break;
40         }
41     }
42     for(int i=0;i<s.size();i++){
43         if(s[i]==‘(‘) {
44             break;
45         }
46         else if(s[i]==‘#‘) {
47                cout<<-1<<endl;return 0;
48         }
49     }
50     for(int i=0;i<s.size();i++){
51             if(s[i]==‘(‘) sum++;
52             else if(s[i]==‘#‘){
53                     if(i!=l)
54                    cout<<1<<endl;
55                     else
56                     {
57                         cout<<sum<<endl;break;
58                     }
59                    sum--;
60             }
61     }
62 }
时间: 2024-11-17 10:46:42

#282(div2) C. Treasure的相关文章

#282(div2) A. Digital Counter

题意:某个数字可能损坏部分,问有多少种变成给出的数字. 思路:直接算. 1 #include<bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 int a[12]; 6 a[0]=2;a[1]=7;a[2]=2; 7 a[3]=3;a[4]=3;a[5]=4; 8 a[6]=2;a[7]=5;a[8]=1;a[9]=2; 9 int n; 10 while(scanf("%d",&n)!=EOF) 11

#282(div2) B. Modular Equations

题意:给出a, b的值, 找出满足a%x = b中x的个数 思路:额... #include<bits/stdc++.h> using namespace std; int main() { int a,b; int i,j; while(scanf("%d%d",&a,&b)!=EOF) { if(a==b) { printf("infinity\n");continue; } int s=0; int c=a-b; for(i=1;i

cf386(div2)大一狗ACM之路

#cf386(div2)总结#前两题很顺利的做了出来, c题扔了, D题wrong了5发才A掉.A题签到题, 但是想多了, 代码写的有点长了. 找被整除最小值*7.B题 读题读了一会, 读完了就有思路了, 1A. 字符串问题, 从后往前两个两个的放到新的字符串里, 一个从最左, 一个从最右, 模拟指针扫着放, 最后特判会不会扫到一起.C题跳了没看, 最后做完了D题回来看了一眼没什么思路 日后再说.D题, 恩.. 两个多小时都用在这题上面了, 20分钟的时候做完了B之后就一直再啃D题, 暴力判断啊

CF #262 (DIV2) C . Present (二分答案)

output standard output Little beaver is a beginner programmer, so informatics is his favorite subject. Soon his informatics teacher is going to have a birthday and the beaver has decided to prepare a present for her. He planted n flowers in a row on

Codeforces Round #326(Div2)

CodeForces 588A 题意:Duff喜欢吃肉,想在接下来的n天,每天都有Ai斤肉吃,但每一天肉的单价Pi不定,肉 可以保存不过期,现已知n天每天肉的斤数Ai,以及单价Pi,为了使每天都             有想要的Ai斤肉吃,求最小花费.  思路:cost=Ai*min(pi)  1<=i<=n; 代码: 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using

Codeforces Round #328(Div2)

CodeForces 592A 题意:在8*8棋盘里,有黑白棋,F1选手(W棋往上-->最后至目标点:第1行)先走,F2选手(B棋往下-->最后至目标点:第8行)其次.棋子数不一定相等,F1,F2中其中一个           棋子最先到达目标点对应方胜利. 思路:W,B棋子分别只能上.下,所以需知道:离第一行最近的W棋距离S1(并且这个W上方没有B),离第八行最近的B棋距离S2(这个B下方没有W) 胜利者为 S1<=S2?F1:F2 注意:S1==S2时 F1胜. 代码: 1 #inc

#404 (div2)Anton and School - 2

As you probably know, Anton goes to school. One of the school subjects that Anton studies is Bracketology. On the Bracketology lessons students usually learn different sequences that consist of round brackets (characters "(" and ")" (w

#419(div2) C. Karen and Game

题意:给出一个n*m的矩阵,然后我们可以每一行-1,每一列-1,问是否可以全部变成0 思路:最开始的时候马上就想到了无论怎样,他每一行该减去的时候无论先后都要减去,那么我每一行取一个最小值减去,然后每一列取最小值减去,然后判断是否全部为0,然后学弟给了我一组数据,3 2 2 2 1 1 2 2,题要求最少步骤,那么我们那样就不可以,所以得判断下n和m的大小,n大先做列,那样就减去的数字更多了,m大反之亦然.(手速狗靠这涨了一波大分,o(* ̄▽ ̄*)ブ) 1 #include<bits/stdc+

Codeforces Round #503(div2) 做题记录

前几天有点咕,马上题解会跟上~ A. 题意: 有n个楼,每个楼有h层,相邻两个楼在(a,b)之间有通道 k次询问,每次问(tA,fA)到(tB,fB)(t为楼的编号,f为楼层)的最短路 题解: 如果不在(a,b)层之间那先爬到离他最近的(a,b)层之间的楼层 然后通过通道直接走,先走到tB走到对应楼层 注意tA=tB时特判 1 #include<bits/stdc++.h> 2 #define ll long long 3 using namespace std; 4 int n,h,a,b,