题目链接

  • 题意:

    输入一个长度不超过1000的字符串,包含数字(1-9)和星号(*)。字符串中的空格已经丢失,所以连起来的数字串能够看成很多分开的数。也能够看成连续的数,即能够随意加入空格。

    如今有两种操作:1)在任何位置加入随意类型的字符(数字或者星号)    2)交换字符串中的随意两个字符

    求:最少操作多少次,使得得到的串是一个合法的逆波兰式

  • 分析:

    对于n个星号,n+1个数字的字符串,假设将星号都移动到串的末尾。那么一定是合法的

    对于操作1,假设须要插入数字,那么插入到字符串的最前边是最优的

    对于操作2,仅仅可能将星号和数字交换。而且将星号移到了字符串的后边



    那么,先对串进行操作1,使得数字个数不小于星号的个数加一;然后从左到右扫描字符串,假设当前星号前边的数字和星号不满足相应关系(同上)。须要将当前星号与最后一个数字交换;最后,假设字符串最后不是星号。答案加一
  • 注意:

    假设最后得到的串最后不是星号。那么必定答案加一

    假设输入没有星号。那么答案是0
const int maxn = 1100;

char s[maxn];
int n;
vector<int> v;
int main()
{
int T;
RI(T);
while (T--)
{
v.clear();
RS(s);
n = strlen(s);
int num = 0, sig = 0;
REP(i, n)
{
if (s[i] == '*') sig++;
else
{
v.push_back(i);
num++;
}
}
int ans = 0;
int preadd = 0;
if (!sig)
{
ans = 0;
}
else
{
if (num < sig + 1)
{
preadd = sig + 1 - num;
ans += preadd;
} int sig_num = 0; for (int i = 0; i < n; i++)
{
if (s[i] == '*')
{
sig_num++;
if (preadd < sig_num + 1)
{
int sz = v.size();
int id = v[sz - 1];
v.pop_back();
swap(s[i], s[id]); sig_num--;
preadd++;
ans++;
}
}
else preadd++;
} if (s[n - 1] != '*')
ans++;
}
printf("%d\n", ans); }
return 0;
}

2014牡丹江——Known Notation的更多相关文章

  1. 2014牡丹江——Hierarchical Notation

    problemId=5380" style="background-color:rgb(51,255,51)">题目链接 字符串模拟 const int MAXN ...

  2. ZOJ 3829 Known Notation (2014牡丹江H称号)

    主题链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do? problemId=5383 Known Notation Time Limit: 2 S ...

  3. 2014牡丹江K Known Notation

    Known Notation Time Limit: 2 Seconds      Memory Limit: 65536 KB Do you know reverse Polish notation ...

  4. ACM学习历程——ZOJ 3829 Known Notation (2014牡丹江区域赛K题)(策略,栈)

    Description Do you know reverse Polish notation (RPN)? It is a known notation in the area of mathema ...

  5. 2014 牡丹江区域赛 B D I

    http://acm.zju.edu.cn/onlinejudge/showContestProblems.do?contestId=358 The 2014 ACM-ICPC Asia Mudanj ...

  6. 2014牡丹江区域赛H(特里)ZOJ3826

    Hierarchical Notation Time Limit: 2 Seconds      Memory Limit: 131072 KB In Marjar University, stude ...

  7. The 2014 ACM-ICPC Asia Mudanjiang Regional Contest(2014牡丹江区域赛)

    The 2014 ACM-ICPC Asia Mudanjiang Regional Contest 题目链接 没去现场.做的网络同步赛.感觉还能够,搞了6题 A:这是签到题,对于A堆除掉.假设没剩余 ...

  8. zoj 3820(2014牡丹江现场赛B题)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5374 思路:题目的意思是求树上的两点,使得树上其余的点到其中一个点的 ...

  9. 2014牡丹江网络zoj3816Generalized Palindromic Number(dfs或者bfs)

    #include <iostream> #include <stdio.h> #include <cmath> #include <algorithm> ...

随机推荐

  1. 小程序排错(redis导致)

    小程序突然出问题,题库加载不了,程序正常,测试环境同样环境,同样代码都正常,但是线上数据秒过期,怀疑redis过期时间设置有问题,但是检查配置没问题,写入数据带过期时间也正常. redis设置key: ...

  2. unity, 显示像素图,以及iOS下像素图变模糊解决办法

    在PS里画了个16x16像素的图: 在webplayer下Filter Mode选为Point,显示效果为: 在ios下显示效果为: 是由于iOS下会将图片压缩为pvr所致,想得到清晰的效果,需将Fo ...

  3. angular4 radio checkbox 有用

    <span *ngFor="let op of [{'id':'a','text':'11'},{'id':'b','text':'2222'},{'id':'cc','text':' ...

  4. poj 2828 Buy Tickets (线段树 单节点 查询位置更新)

    Buy Tickets Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 15533   Accepted: 7759 Desc ...

  5. Xilinx下载方式(具体可以参考配置MCS文件时右下角help调出的doc)

    1.两者都属高速并行配置模式.SelectMAP是早期的FPGA两类配置模式之一,是相对于串行(Serial)配置而言的,与主串(Master Serial)和从串(Slave Serial)模式对应 ...

  6. C++语言基础(6)-const 关键字

    在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定.const 可以用来修饰成员变量.成员函数以及对象. 一 const 成员变量 const 成员变量的用法和普通 const 变量 ...

  7. jquery的text()

    jQuery 文档操作 - text() 方法 jQuery 文档操作参考手册 实例 设置所有 <p> 元素的内容: $(".btn1").click(function ...

  8. iOS自定义转场动画实战讲解

    iOS自定义转场动画实战讲解   转场动画这事,说简单也简单,可以通过presentViewController:animated:completion:和dismissViewControllerA ...

  9. mockito模拟静态方法

    这里要用到使用powerMock 注意点: 1 @RunWith(PowerMockRunner.class) 2 PowerMockito.mockStatic(StaticTest.class); ...

  10. CDH-5.12.2安装教程

    CDH是Cloudera公司提供的Hadoop发行版,它在原生开源的Apache Hadoop基础之上,针对特定版本的Hadoop以及Hadoop相关的软件,如Zookeeper.HBase.Flum ...