博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gym 100507H - Pair: normal and paranormal
阅读量:4881 次
发布时间:2019-06-11

本文共 1251 字,大约阅读时间需要 4 分钟。

题目链接:

----------------------------------------------------------------------------

刚看这题的时候感觉是区间$DP$ 然而复杂度一直停留在$O(n^3)$优化不下来

后来又瞎试了一些贪心 都在较大的数据上挂掉了

反复琢磨着大写字母和相应小写字母匹配 便想到了以前做过的括号匹配

只不过此题大写字母和小写字母的左右关系是不限制的

因此可以用一个栈来辅助贪心

如果当前加入的新的字母可以直接和栈顶匹配就直接让它们匹配

否则先丢在栈顶放着(防止做了这个匹配后使得匹配线之间的字母被限制住无法匹配)

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 const int N = 10010; 7 char s[N]; 8 int sta[N]; 9 int ma[N], ans[N], num[N];10 int n, len, top;11 int main()12 {13 scanf("%d%s", &n, s + 1);14 len = n << 1;15 for(int i = 1; i <= len; ++i)16 if(!top || abs((int)s[sta[top - 1]] - s[i])!= 32)17 sta[top++] = i;18 else19 {20 ma[i] = sta[top - 1];21 ma[sta[top - 1]] = i;22 --top;23 }24 if(top)25 {26 puts("Impossible");27 return 0;28 }29 for(int i = 1; i <= len; ++i)30 if(s[i] < 'a')31 num[i] = num[i - 1];32 else33 num[i] = num[i - 1] + 1;34 for(int i = 1; i <= len; ++i)35 if(s[i] < 'a')36 printf("%d ", num[ma[i]]);37 }

 

转载于:https://www.cnblogs.com/sagitta/p/5843194.html

你可能感兴趣的文章
js 数据绑定
查看>>
jsp的C标签一般使用方法以及js接收servlet中的对象及对象数字
查看>>
H5 简介
查看>>
window.frameElement的使用
查看>>
nl命令
查看>>
如何使用jQuery $.post() 方法实现前后台数据传递
查看>>
Using Flash Builder with Flash Professional
查看>>
jsp/post中文乱码问题
查看>>
C# 插入或删除word分页符
查看>>
数据库数据的查询----连接查询
查看>>
找不到可安装的ISAM ,asp.net读取数据丢失,解决的一列里有字符与数字的
查看>>
Java学习笔记三(对象的基本思想一)
查看>>
Java程序(文件操作)
查看>>
KMP算法 最小循环节 最大重复次数
查看>>
Proving Equivalences (强连通,缩点)
查看>>
Period (KMP算法 最小循环节 最大重复次数)
查看>>
sgu 103. Traffic Lights
查看>>
poj 3621 Sightseeing Cows
查看>>
hdu 3666 THE MATRIX PROBLEM
查看>>
TopCoder SRM 176 Deranged
查看>>