Codeforces Round #282 (Div. 2) C
来源:互联网 发布:无锡加工中心编程招聘 编辑:程序博客网 时间:2024/05/21 06:21
题目链接:http://codeforces.com/contest/495/problem/C
括号匹配。
因为#只能翻译成),所以就统计)和(+#的个数,搞一搞。不过以前没怎么做过,其实属于YY题啦。。
/* * ThinkingLion.cpp * * Created on: 2014年1月29日 * Author: dell */#include<stdio.h>#include<iostream>#include<string>#include<string.h>#include<algorithm>#include<iomanip>#include<vector>#include<time.h>#include<queue>#include<stack>#include<iterator>#include<math.h>#include<stdlib.h>#include<limits.h>#include<map>//#define ONLINE_JUDGE#define eps 1e-8#define INF 0x7fffffff#define FOR(i,a) for((i)=0;i<(a);(i)++)#define MEM(a) (memset((a),0,sizeof(a)))#define sfs(a) scanf("%s",a)#define sf(a) scanf("%d",&a)#define sfI(a) scanf("%I64d",&a);#define pf(a) printf("%d\n",a)#define pfs(a) printf("%s\n",a)#define sfd(a,b) scanf("%d%d",&a,&b)#define for1(i,a,b) for(int i=(a);i<b;i++)#define for2(i,a,b) for(int i=(a);i<=b;i++)#define clr1(a) memset(a,0,sizeof(a))#define clr2(a) memset(a,-1,sizeof(a))const double PI=acos(-1.0);template<class T> T gcd(T a,T b){return b?gcd(b,a%b):a;}template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}template<class T> inline T Min(T a,T b){return a<b?a:b;}template<class T> inline T Max(T a,T b){return a>b?a:b;}using namespace std;#define ll long longint n,m,k;#define N 100005const int Mod = 1e9+7;char s[100005];int flag;int main(){#ifndef ONLINE_JUDGEfreopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);#endifint t;while(sfs(s)!=EOF){//处理方法为非最后一个#都代替1个,最后一个#号匹配所有未匹配的(int len = strlen(s);int c = 0;int tmp;int pos;int flag = 0;for(int i=0;i<len;i++){//c代表还未匹配的'('数目,也即是'#'需要代替的个数if(s[i] == '(') c++;else if(s[i] == ')') c--;else{tmp = c--;pos = i;}if(c<0){//说明在某一段字符串中,')'+'#' 的个数 > '('的个数 ,不可行printf("-1\n");flag = 1;break;}}if(flag)continue;tmp -= (c+1);//得到的tmp为从最后一个#号到字符串末尾的出现的 ')' 的个数。if(tmp<0){printf("-1\n");continue;}for(int i=pos+1;i<len;i++){ //pos为最后一个'#'的位置if(s[i] == ')') tmp--;else tmp++;if(tmp<0 || (i==len-1&&tmp!=0)){ //原则上是该段字符串中 )的数目 == tmp,否则不可行printf("-1\n");flag=1;break;}}if(flag)continue;for(int i=0;i<len;i++){ //非最后一个#都为1,最后一个补成c+1个')'if(s[i] == '#'){if(i!=pos)printf("1\n");elseprintf("%d\n",c+1);}}}return 0;}
0 0
- Codeforces Round #282 (Div. 2) C
- 【codeforces】Codeforces Round #370 (Div. 2) C
- Codeforces Round #282 (Div. 2) B. Modular Equations&C. Treasure
- Codeforces Round #282 (Div. 2) C. Treasure 贪心
- Codeforces Round #105 (Div. 2) C
- Codeforces Round 134 div 2 C题
- Codeforces Round #137 (Div. 2), problem: (C)
- Codeforces Round #153 (Div. 2) C题
- Codeforces Round #158 (Div. 2) C题
- Codeforces Round #162 (Div. 2) C
- Codeforces Round #166 (Div. 2) c. Secret
- Codeforces Round#170(Div 2)C
- Codeforces Round #173 (Div. 2) Problem C
- Codeforces Round #192 (Div. 2) C. Purification
- Codeforces Round #196 (Div. 2) C. Quiz
- Codeforces Round #197 (Div. 2) (C~E)
- Codeforces Round #196 (Div. 2) C. Quiz
- Codeforces Round #198 (Div. 2) 340C
- [HDOJ]2014
- 学习boost::asio(1)
- ubuntu上编译Android源码(Build Android source
- 第十六周项目二 用指针玩转字符串-项目目录
- 把苹果iPhone手机传文件传给安卓系统手机
- Codeforces Round #282 (Div. 2) C
- Struts2学习笔记——Struts框架的工作原理(源码调试)
- NANDFLASH学习 <s3c2440>
- android网络通信之HttpUrlConnection
- 斐波那契数列
- Android 通过调用谷歌语音系统接口弹出语音识别对话框的方法 .
- JavaScript基础-BOM&DOM
- 二叉树的非递归实现
- 根据坐标系统构造转换矩阵(不包含缩放)