zoj 3829 (2014牡丹江区域赛K) Known Notation
2014-10-15 08:26
218 查看
题意:给一个不带空格的逆波兰式,问最少进行几次操作,能使这个式子合法。操作有两种:在任意位置插入一个字符(数字或运算符),交换任意两个字符。
思路:贪心。分析一下可以知道,合法的逆波兰式数字至少比运算符多1,那么可以先通过插入让式子满足这个条件,剩下的都用交换解决(用交换解决需要的次数不会大于插入)。对于第一步,我们可以贪心都插入在最前面;对于第二步,我们可以贪心把最前面的运算符与最后面的数字交换。其实不需要真正执行两种操作,只需要计数就可以了。
思路:贪心。分析一下可以知道,合法的逆波兰式数字至少比运算符多1,那么可以先通过插入让式子满足这个条件,剩下的都用交换解决(用交换解决需要的次数不会大于插入)。对于第一步,我们可以贪心都插入在最前面;对于第二步,我们可以贪心把最前面的运算符与最后面的数字交换。其实不需要真正执行两种操作,只需要计数就可以了。
#include <iostream> #include <stdio.h> #include <cmath> #include <algorithm> #include <iomanip> #include <cstdlib> #include <string> #include <memory.h> #include <vector> #include <queue> #include <stack> #include <map> #include <set> #include <ctype.h> #include <sstream> #define INF 1000000000 #define ll long long #define min3(a,b,c) min(a,min(b,c)) #define max3(a,b,c) max(a,max(b,c)) #define MAXN 100010 using namespace std; char str[1010]; int main(){ int t; cin>>t; while(t--){ scanf("%s",str); int siz=strlen(str); int cntn=0; int cnto=0; for(int i=0;i<siz;i++){ //统计需要插入多少个数字 if(str[i]=='*') cnto++; else cntn++; } int add=0; if(cnto>cntn-1)add=cnto-cntn+1; cntn=add; cnto=0; int swap=0; for(int i=0;i<siz;i++){ if(str[i]=='*') cnto++; else cntn++; if(cnto>cntn-1){ //如果当前不合法了,"交换"一下 swap++; cnto--; cntn++; } } cout<<add+swap<<endl; } return 0; }
相关文章推荐
- ACM学习历程——ZOJ 3829 Known Notation (2014牡丹江区域赛K题)(策略,栈)
- ZOJ 3829 Known Notation / 2014牡丹江区域赛 K (模拟, 贪心)
- zoj 3829 Known Notation(2014在牡丹江区域赛k称号)
- ZOJ 3819 Average Score (2014牡丹江区域赛)
- zoj 3829 Known Notation(2014年牡丹江区域赛k题)
- zoj 3822 Domination(2014牡丹江区域赛D题)
- zoj 3809 水 2014 ACM牡丹江区域赛网赛
- ZOJ 3829 Known Notation (2014牡丹江H称号)
- zoj 3827 Information Entropy(2014牡丹江区域赛I题)
- zoj 3822 Domination(2014牡丹江区域赛D题) (概率dp)
- zoj 3822 (2014 牡丹江区域赛 D) Domination
- ZOJ 3829 (2014 牡丹江现场赛 K 题)
- 2014牡丹江区域赛B(树的直径)ZOJ3820
- ZOJ 3827 Information Entropy (2014牡丹江区域赛)
- ZOJ 3822 Domination The 2014 ACM-ICPC 牡丹江区域赛 概率dp 先算概率,再转成期望
- ZOJ3819 ACM-ICPC 2014 亚洲区域赛牡丹江赛区现场赛A题 Average Score 签到题
- ZOJ 3829 2014牡丹江K 贪心
- ZOJ 3829 Known Notation (2014牡丹江H题)
- 2014ACM/ICPC亚洲区域赛牡丹江站现场赛-K ( ZOJ 3829 ) Known Notation
- [zoj 3822]2014牡丹江区域赛 Domination 概率dp求期望