[atAGC054D]ox
对于两个字符串$s$和$t$(保证其中每一种字符个数相同),定义$s$和$t$的相对逆序对数为$s$得到$t$的最少交换次数,显然同种字符相对顺序保持不变,因此即依次编号后的逆序对数
问题不妨看作构造合法字符串$t$使得$s$和$t$的相对逆序对数最小,定义$f_{S}(s)$为$s$仅保留$S$中的字符后所得到的字符串,那么有以下两个结论——
结论1:当$S=\{(,)\}$时,若$t$是使得$s$和$t$相对逆序对数最小的合法字符串,则$f_{S}(t)$也是使得$f_{S}(s)$和$f_{S}(t)$相对逆序对数最小的合法字符串
结论2:当$S=\{o,x\}$时,若$t$是使得$s$和$t$相对逆序对数最小的合法字符串,则$f_{S}(s)=f_{S}(t)$
由此,不妨先求出$S=\{(,)\}$时的$f_{S}(t)$,进而即将$o$和$x$从左到右依次插入,显然这可以用一个二维dp计算,条件为$x$之前左括号数严格大于右括号数,计算答案考虑逆序对数即可
时间复杂度为$o(n^{2})$,可以通过

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 8005
4 queue<int>q;
5 vector<int>vb,vc;
6 int n,cnt,ans,sum[N],f[N][N];
7 char s[N];
8 int main(){
9 scanf("%s",s+1);
10 n=strlen(s+1);
11 vb.push_back(0),vc.push_back(0);
12 for(int i=1;i<=n;i++){
13 if (s[i]=='('){
14 cnt++;
15 vb.push_back(i);
16 if (!q.empty()){
17 vb.push_back(q.front());
18 q.pop();
19 }
20 }
21 if (s[i]==')'){
22 cnt--;
23 if (cnt<0)q.push(i);
24 else vb.push_back(i);
25 }
26 if ((s[i]=='o')||(s[i]=='x'))vc.push_back(i);
27 }
28 for(int i=1;i<vb.size();i++){
29 sum[i]=sum[i-1];
30 if (s[vb[i]]=='(')sum[i]++;
31 else sum[i]--;
32 }
33 memset(f,0x3f,sizeof(f));
34 memset(f[0],0,sizeof(f[0]));
35 for(int i=1;i<vc.size();i++){
36 cnt=0;
37 for(int j=0;j<vb.size();j++)
38 if (vc[i]>vb[j])cnt++;
39 for(int j=0;j<vb.size();j++){
40 if (vc[i]<vb[j])cnt++;
41 else cnt--;
42 if ((s[vc[i]]=='o')||(sum[j]))f[i][j]=min(f[i][j],f[i-1][j]+cnt);
43 }
44 for(int j=1;j<vb.size();j++)f[i][j]=min(f[i][j],f[i][j-1]);
45 }
46 ans=0x3f3f3f3f;
47 for(int i=0;i<vb.size();i++)ans=min(ans,f[(int)vc.size()-1][i]);
48 for(int i=1;i<vb.size();i++)
49 for(int j=i+1;j<vb.size();j++)
50 if (vb[i]>vb[j])ans++;
51 printf("%d\n",ans);
52 return 0;
53 }
[atAGC054D]ox的更多相关文章
- Hrbust 2320 OX (博弈)
题目链接 Hrbust 2320 用三进制来存储整个棋盘的状态. 设$dp[status][now]$为轮到$now$下棋的时候是必胜必败还是平局. 那么若当前能延伸出的所有状态中存在必败态的,则当 ...
- -oN ,-oX,-oG
-oN ,正常输出 -oX, xml输出 nmap 192.168.9.12 -oX TEST.xml -oG grep输出 html文件可读性比xml文件要好,将xml转换成html xs ...
- 哈理工OJ P2320:OX
题目链接:OX 题意 :给出一个3X3的黑白棋棋盘,棋盘上有若干黑白子,再给出下一个下的人,问下一个下的人能否赢 分析:考虑到只有39种状态,故用一个数保存目前棋盘的状态,记为value,再枚举空位D ...
- OX中修改文件名
右击文件,显示简介,名称与扩展名
- Mac OX上安装MongoDb
MongoDB的安装有好多种安装方法,有普通青年的HomeBrew方式,也有文艺青年的源码编译方式.我只想快速的装起来用一下,所以我选最简单的HomeBrew. 请参考官方文档 : http://do ...
- Xcode与OX 版本对照表
xcode1.0-xcode2.x 版本 OS X运行版本 OS X SDK(s) 1.0 OS X Panther(10.3.x) OS X Puma(10.1.x),OS X Jaguar(10. ...
- Mac OX 隐藏文件夹,文件,应用,磁盘的2种方法 hide finder folder, file, application, volume in 2 ways
经常需要主目录下隐藏一些文件夹之类的, 第一想到的当然就是:在要隐藏的文件夹前面加『.』(leading dot),这个用法当然可以的了 用习惯了Linux/GNU系统的,基本习惯使用这种办法 但是, ...
- apache for mac OX S 10.10
mac下如何针对 apache 设置虚拟目录呢?可能很多人都设置过,但也都不太会,每次都是网上找文章啥的.这里,我自己整理了一点,希望可以帮到大家. 还原 httpd.conf 配置文件 如果,你现在 ...
- MAC OX 配置JDK环境变量
大家在windows里面配置JDK环境变量很容易,但是如果要在mac里面配置JDK环境变量和windows里面有所不同,具体如下: 第一: mac OS里面自带jdk,不过是1.6的版本,现在很多人使 ...
随机推荐
- 11.3 LVS
LVS是什么 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.o ...
- mysql创建库
建库 GBK: create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; UTF8: CREATE DATABAS ...
- GDP区域分布图的生成与对比(ArcPy实现)
一.背景 各地区经济协调发展是保证国民经济健康持续稳定增长的关键.GDP是反映各地区经济发展状况的重要指标.科学准确分析各地区GDP空间分布特征,对制定有效措施,指导经济协调发展具有重要参考价值. 二 ...
- NX Open显示符号(UF_DISP_display_temporary_point)
UF_DISP_display_temporary_point 使用方法: 1 Dim x As Double = 0, y As Double = 0, z As Double = 0 2 3 Di ...
- 【UE4 C++ 基础知识】<5> 容器——TArray
概述 TArray 是UE4中最常用的容器类.其速度快.内存消耗小.安全性高. 其设计时未考虑扩展问题,因此建议在实际操作中勿使用 新建(new) 和 删除(delete) 创建或销毁 TArray ...
- anaconda+pytorch安装
环境配置说明: 因项目需要,需要写一个说明文档交付公司人员,指导其进行环境的安装 1. 安装 Anaconda 进入清华开源软件镜像站,其网址如下:https://mirrors.tuna.tsing ...
- sort命令的学习与实践
一.用man sort 查看sort的帮助文档 *sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出. [rocrocket@ro ...
- 转载:使用Xilinx IP核进行PCIE开发学习笔记(一)简介篇
https://zhuanlan.zhihu.com/p/32786076 最近接触到一个项目,需要使用PCIE协议,项目要求完成一个pcie板卡,最终可以通过电脑进行通信,完成电脑发送的指令.这当中 ...
- sublime text c++ makefile
http://blog.csdn.net/wangdan1600/article/details/43857195 http://blog.csdn.net/artprog/article/detai ...
- iptables 原理及应用
转自:iptables 原理及应用 iptables是一个Linux下优秀的nat+防火墙工具,我使用该工具以较低配置的传统pc配置了一个灵活强劲的防火墙+nat系统,小有心得,看了网上也有很多这方面 ...