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

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

那么从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. poj 1959 Darts 同意反复组合

    水题.直接贴代码. //poj 1959 //sep9 #include <iostream> using namespace std; int n; int f[128]; int so ...

  2. HDU ACM 4578 Transformation-&gt;段树-间隔的变化

    分析:复杂的经营分部树. 只有一个查询操作,这是要求[l,r]的数量之间p钍总和.并不是所有的查询所有节点,会议TLE.最好的是查询部件[a.b].所有这个区间值我们是平等的,即能返回(b-a+1)* ...

  3. 高性能 Socket 组件 HP-Socket v3.2.1-RC2 公布

    HP-Socket 是一套通用的高性能 TCP/UDP Socket 组件,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C+ ...

  4. TotoiseSVN基本用法

    TotoiseSVN的基本用法 TotoiseSVN的基本用法 一.签入源码到SVNserver 假如我们使用Visual Studio在目录StartKit中创建了一个项目.我们要把这个项目的源码签 ...

  5. CLR Profile解决内存占用过高

    CLR Profile解决内存占用过高的问题 炮哥:"嘿,哥们,忙啥呢,电脑卡成这逼样." 勇哥:"在用CLR Profile工具分析下FlexiPrint的内存占用情况 ...

  6. C# WinForm多线程(三)Control.Invoke

    下面我们就把在Windows Form软件中使用Invoke时的多线程要注意的问题给大家做一个介绍. 首先,什么样的操作需要考虑使用多线程?总的一条就是,负责与用户交互的线程(以下简称为UI线程)应该 ...

  7. nodejs添加路由route步骤详解

    首先,毋庸置疑, 新建一个基础express站点.建好之后, 有三个文件需要code(当然,三个步骤顺序随意). 下面以添加一个'/about'为例说明. 1. 在views文件夹里,新建一个jade ...

  8. R三星463无线网卡驱动,声音驱动程序,FN快捷键驱动,Easy_Display_Manager

    http://download.csdn.net/detail/u012120447/7568369 当我们重装系统,该卡不能使用,您需要使用快捷键无法使用时, Easy_Display_Manage ...

  9. Linux平台下裸设备的绑定:

    Linux平台下裸设备的绑定: 运用RAW绑定 方法一 raw的配置(1) [root@qs-dmm-rh2 mapper]# cat /etc/rc.local #!/bin/sh # # This ...

  10. 【Web探索之旅】第二部分第三课:框架和内容管理系统

    内容简介 1.第二部分第三课:框架和内容管理系统 2.第二部分第四课预告:数据库   第二部分第三课:框架和内容管理系统 上一课我们介绍了服务器端的编程语言,有PHP,Java,Python,Ruby ...