推断一个序列是否是有效是简单的。

可是推断序列是不是有多个解会出问题。

那么从i=0 ~l

假设读到问号,推断该问号成为(能否有效,该问号为)是否有效。

假设都有效,则必有多个解。

假设都无效,则无解。

假设一个有效,则把问号改成有效的括号。

代码实现例如以下

#include<stdio.h>
#include<string.h>
char s[1000005],tp[1000005];
int l;
int pd()
{
int zuo,you,num,i;
num=0;
zuo=0;
you=0;
for(i=0;i<l;i++)
{
num++;
if(num==1)
{
if(tp[i]=='?')
tp[i]='('; } if(tp[i]=='(') zuo++;
if(tp[i]==')') you++;
if(you>num/2)
{
return 0;
}
if(num%2==0)
{
if(you==num/2)
{
zuo=0;
you=0;
num=0;
}
} }
if(zuo>num/2) return 0;
num=0;
zuo=0;
you=0;
for(i=l-1;i>=0;i--)
{
num++;
if(num==1)
{
if(tp[i]=='?')
tp[i]=')';
}
if(tp[i]=='(') zuo++;
if(tp[i]==')') you++;
if(zuo>num/2)
{
return 0;
}
if(num%2==0)
{
if(zuo==num/2)
{
zuo=0;
you=0;
num=0;
}
} }
if(you>num/2) return 0;
return 1; }
int main()
{
int zuo,you,x,y,i;
while(scanf("%s",s)!=EOF)
{
l=strlen(s);
if(l%2==1)
{
printf("None\n");
continue;
} else
{
strcpy(tp,s);
x=pd();
if(x==0)
{
printf("None\n");
continue;
}
for(i=0;i<l;i++)
{
if(s[i]=='?')
{
strcpy(tp,s);
tp[i]=')';
x=pd();
strcpy(tp,s);
tp[i]='(';
y=pd();
if(x+y==2)
{printf("Many\n");
break;
}
if(x+y==0)
{
printf("None\n");
break;
}
if(x==1)
s[i]=')';
else
s[i]='(';
} }
if(i==l)
{
printf("Unique\n"); }
}
}
return 0;
}

hdu 4915 Parenthese sequence 多校第五场的更多相关文章

  1. hdu 4915 Parenthese sequence(模拟)2014多培训学校5现场

    Parenthese sequence                                                                     Time Limit: ...

  2. HDU 4915 Parenthese sequence

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4915 解题报告:从前往后遍历一次,每次判断')'的数目是不是满足 n < (i +1)/ 2,从 ...

  3. HDU 4915 Parenthese sequence _(:зゝ∠)_ 哈哈

    哦,我没做 #include <cstdio> #include <cstring> #include <algorithm> const int N = 1000 ...

  4. hdu 4915 Parenthese sequence--2014 Multi-University Training Contest 5

    主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4915 Parenthese sequence Time Limit: 2000/1000 MS (Ja ...

  5. 多校第五场 归并排序+暴力矩阵乘+模拟+java大数&amp;记忆化递归

    HDU 4911 Inversion 考点:归并排序 思路:这题呀比赛的时候忘了知道能够用归并排序算出逆序数,可是忘了归并排序的实质了.然后不会做-- 由于看到题上说是相邻的两个数才干交换的时候.感觉 ...

  6. [2019HDU多校第五场][HDU 6626][C. geometric problem]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6626 题目大意:给出平面上六个点\(A,B,M,N,X,Y\)以及两条直线\(L1,L2\),要求在四 ...

  7. hdu多校第五场1005 (hdu6628) permutation 1 排列/康托展开/暴力

    题意: 定义一个排列的差分为后一项减前一项之差构成的数列,求对于n个数的排列,差分的字典序第k小的那个,n<=20,k<=1e4. 题解: 暴力打表找一遍规律,会发现,对于n个数的排列,如 ...

  8. 2014多校第五场1010 || HDU 4920 Matrix multiplication(矩阵乘法优化)

    题目链接 题意 : 给你两个n*n的矩阵,然后两个相乘得出结果是多少. 思路 :一开始因为知道会超时所以没敢用最普通的方法做,所以一直在想要怎么处理,没想到鹏哥告诉我们后台数据是随机跑的,所以极端数据 ...

  9. 2014多校第五场1001 || HDU 4911 Inversion (归并求逆序数)

    题目链接 题意 : 给你一个数列,可以随意交换两相邻元素,交换次数不超过k次,让你找出i < j 且ai > aj的(i,j)的对数最小是多少对. 思路 : 一开始想的很多,各种都想了,后 ...

随机推荐

  1. Android开发有用技巧:推断当前系统语言版本号

    Locale locale = getResources().getConfiguration().locale; String language = locale.getLanguage(); 以上 ...

  2. ios01

    http://code4app.com/ 0.全部Swift http://numbbbbb.gitbooks.io/-the-swift-programming-language-/content/ ...

  3. [思考] hdu 4811 Ball

    意甲冠军: 有三种颜色的小珠,每种颜色的量R,Y,B 转球进入桌面成序,有多少种不同的颜色分别砍下的球在球门前+有多少身后球不同的颜色 问:最大的总比分值 思考: 球和后面的球先放好.剩下的就放中间了 ...

  4. hdu 3333 树状数组+离线处理

    http://acm.hdu.edu.cn/showproblem.php?pid=3333 不错的题,想了非常久不知道怎么处理,并且答案没看懂,然后找个样例模拟下别人的代码立即懂了---以后看不懂的 ...

  5. ListView滑动删除 ,仿腾讯QQ

    转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/22961279 在CSDN上开了很多大神们的文章,感觉受益良多,也非常欣赏大家的分 ...

  6. Oracle的海量存储技术

    下午去參加一个Oracle有关海量数据存储技术的培训讲座了. 地址在广州市林和西路101号天河区计经大楼西側三楼. 培训发起机构为:广州中睿信息技术有限公司. 以下就简要总结一下所听到的一些东西,也算 ...

  7. System.Threading.ThreadStateException

    异常:"System.Threading.ThreadStateException"在未处理的异常类型 System.Windows.Forms.dll 发生 其它信息: 在能够调 ...

  8. 【世外桃源】福音节目 swtychina.com

    [世外桃源]福音节目 今天小编满怀热情,带着激动地心情,颤抖的双手,以“大无畏的精神,高山仰止的情操”为大家郑重推荐很好的一个福音节目: <世外桃源>, 哎,不对,貌似从2013年初开始& ...

  9. LeetCode——ZigZag Conversion

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...

  10. PHP制作pdf文档方法

    原文:PHP制作pdf文档方法 本篇博客是在看完 php+mysql web书以后自己的测试代码,虽然是测试代码,但不是简单的粘贴复制,为了学习thinkPHP框架,自己就用这个来做的,而且这本书已经 ...