贪心+模拟 ZOJ 3829 Known Notation
2015-08-16 20:42
183 查看
题目传送门
/* 题意:一串字符串,问要最少操作数使得成为合法的后缀表达式 贪心+模拟:数字个数 >= *个数+1 所以若数字少了先补上在前面,然后把不合法的*和最后的数字交换,记录次数 岛娘的代码实在难懂啊~ */ /************************************************ * Author :Running_Time * Created Time :2015-8-16 14:29:49 * File Name :K.cpp ************************************************/ #include <cstdio> #include <algorithm> #include <iostream> #include <sstream> #include <cstring> #include <cmath> #include <string> #include <vector> #include <queue> #include <deque> #include <stack> #include <list> #include <map> #include <set> #include <bitset> #include <cstdlib> #include <ctime> using namespace std; #define lson l, mid, rt << 1 #define rson mid + 1, r, rt << 1 | 1 typedef long long ll; const int MAXN = 1e3 + 10; const int INF = 0x3f3f3f3f; const int MOD = 1e9 + 7; char str[MAXN]; int main(void) { //ZOJ 3829 Known Notation int T; scanf ("%d", &T); while (T--) { scanf ("%s", str); int x = 0, len = strlen (str); for (int i=0; i<len; ++i) { if (str[i] == '*') x++; } if (x == 0) { puts ("0"); continue; } int ans = max (x + 1 - (len - x), 0); int n = ans; for (int i=0; i<len; ++i) { if (str[i] == '*') { if (n <= 1) n++, ans++; else n--; } else n++; } printf ("%d\n", ans); } return 0; }
相关文章推荐
- 剑指offer 算法(栈和队列 查找和排序)
- oracle10g安装时报"无法确定主机的IP地址时产生异常错误"
- 【LeetCode]1.Two Sum
- iOS UI 视图移动及缩放
- SQL中常用的数据类型及简介
- HW--自守数
- linux下进程的最大线程数、进程最大数、进程打开的文件数
- 股市风暴下的雪球架构改造经验分享
- 二分搜索
- Mac下解决Android studio真机调试时无法识别魅蓝手机问题
- HDU 2256 & HDU 4565 (矩阵快速幂 + 公式推演)
- 【您的凭证不工作】win7远程桌面提示,请输入新凭据。登录没有成功
- 实模式和保护模式
- NOIP2010 关押罪犯(图论+二分)
- 《C算法》读书笔记 (4):Hello,Joseph!
- JavaScript编程--任意输入一个数判断是不是闰年,数列求和练习
- CodeForces-448C Painting Fence
- 黑马程序员——多线程(上)——第11天
- 每日python(1)
- 06 AppCan入门学习之基本按件(BUTTON/SWITCH/LISTVIEW)