栈+括号序列+暴力枚举——cf1248D1
这个复杂度首先就想到是n3的复杂度,n2枚举换的位置,求值在花费n复杂度
判断一个序列有多少独立的括号子串时用栈处理一下即可
/*
枚举交换两个括号的位置,然后再对新的序列判一次即可
*/
#include<bits/stdc++.h>
using namespace std;
#define N 1005
char s[N];
int n,ans[N][N]; int calc(){
stack<int>stk;
while(stk.size())
stk.pop();
int res=,len=;
for(int i=;i<=n;i++){
if(s[i]=='(')
stk.push();
else if(s[i]==')'){
if(stk.size() && stk.top()==){
stk.pop();
if(stk.size()==len)
res++;//一段完整的括号序列结束了
}
else {
res=;
stk.push();
len++;
}
}
} int cnt0=,cnt1=;
while(stk.size()){
if(stk.top()==)
cnt0++;
else cnt1++;
stk.pop();
}
if(cnt0 && cnt1 && cnt0==cnt1)res++;
if(cnt0 !=cnt1)res=;
return res;
} int main(){
cin>>n;
scanf("%s",s+); int c1=,c2=;
for(int i=;i<=n;i++)
if(s[i]=='(')c1++;
else c2++;
if(c1!=c2){
cout<<<<endl;
cout<<"1 1"<<'\n';
return ;
} int Max=;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
swap(s[i],s[j]);
ans[i][j]=calc();
Max=max(Max,ans[i][j]);
swap(s[i],s[j]);
} for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(ans[i][j]==Max){
cout<<Max<<'\n';
cout<<i<<" "<<j<<'\n';
return ;
} }
栈+括号序列+暴力枚举——cf1248D1的更多相关文章
- Catalan数,括号序列和栈
全是入门的一些东西.基本全是从别处抄的. 栈: 支持单端插入删除的线性容器. 也就是说,仅允许在其一端加入一个新元素或删除一个元素. 允许操作的一端也叫栈顶,不允许操作的一端也叫栈底. 数个箱子相叠就 ...
- 51Nod 1158 全是1的最大子矩阵 —— 预处理 + 暴力枚举 or 单调栈
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1158 1158 全是1的最大子矩阵 基准时间限制:1 秒 空 ...
- 洛谷 P1241 括号序列(栈)
嗯... 题目链接:https://www.luogu.org/problem/P1241 首先这道题是栈的入门题的加强版, 不仅要你判断这个括号序列是否合法,还要你将这个序列补充完整... 一开始是 ...
- Vijos P1448 校门外的树【多解,线段树,树状数组,括号序列法+暴力优化】
校门外的树 描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的…… 如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作: K=1,K= ...
- hihoCoder #1179 : 永恒游戏 (暴力枚举)
题意: 给出一个有n个点的无向图,每个点上有石头数个,现在的游戏规则是,设置某个点A的度数为d,如果A点的石子数大于等于d,则可以从A点给每个邻接点发一个石子.如果游戏可以玩10万次以上,输出INF, ...
- Parenthesis UVALive - 4882 删除不必要的括号序列,模拟题 + 数据
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...
- BZOJ4350: 括号序列再战猪猪侠
Description 括号序列与猪猪侠又大战了起来. 众所周知,括号序列是一个只有(和)组成的序列,我们称一个括号 序列S合法,当且仅当: 1.( )是一个合法的括号序列. 2.若A是合法的括号序列 ...
- HNU 12886 Cracking the Safe(暴力枚举)
题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12886&courseid=274 解题报告:输入4个数 ...
- POJ-3187 Backward Digit Sums (暴力枚举)
http://poj.org/problem?id=3187 给定一个个数n和sum,让你求原始序列,如果有多个输出字典序最小的. 暴力枚举题,枚举生成的每一个全排列,符合即退出. dfs版: #in ...
随机推荐
- find及其他命令
Find命令 Find / -type f :f为普通文件 Find / -name *.txt :查找.txt结尾的 Find / -size +30M :找根目录下大于30M的文件 F ...
- 洛谷P1087--FBI树(二叉树)
题目描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串. FBI树是一种二叉树,它的结点类型也包括F结点,B结点和I结点三 ...
- vue常见面试题
什么是 mvvm? MVVM 是 Model-View-ViewModel 的缩写.mvvm 是一种设计思想.Model 层代表数据模型,也可以在 Model 中定义数据修改和操作的业务逻辑:View ...
- SAS 读取数据文件
每次读取数据时需要告诉SAS3件事:1:数据存在哪里?2:数据的形式3:创建的数据集的类型(永久/临时) 1 读取SAS数据集 DATA temp; /*temp 为创建的数据集名称*/ INFILE ...
- 2019ccpc秦皇岛/Gym102361 I - Invoker dp
题意: 连续3个特定的按键(在这3个中不要求顺序)能使出某个技能,使出不同技能所需要的按键可以重叠,给你一个技能序列,问你最少花费多少次按键能按顺序使出这些招数. 题解: dp,dp[i][j]代表使 ...
- 未来-YLB-跳蚤市场:跳蚤市场(flea market)
ylbtech-未来-YLB-跳蚤市场:跳蚤市场(flea market) 跳蚤市场(flea market)是欧美等西方国家对旧货地摊市场的别称.由一个个地摊摊位组成,市场规模大小不等. 出售商品多 ...
- Linux内核TSS的使用
参见文章:http://blog.chinaunix.net/uid-22695386-id-272098.html linux2.4之前的内核有进程最大数的限制,受限制的原因是,每一个进程都有自已的 ...
- 2019 ACM-ICPC 南京 现场赛 H. Prince and Princess
题意 王子想要娶公主,但是需要完成一个挑战:在一些房间中找出公主在哪. 每个房间有一个人,他们彼此知道谁在哪个房间.可以问他们三种问题: 你是谁? 在某个房间是谁? 公主在哪个房间? 有三类人,一类一 ...
- PAT_A1089#Insert or Merge
Source: PAT A1089 Insert or Merge (25 分) Description: According to Wikipedia: Insertion sort iterate ...
- Centos7使用Python3
1.安装python3替换python2.7 [root@Python src]# wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4. ...