ZOJ 3829 贪心 思维题
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829
现场做这道题的时候,感觉是思维题。自己智商不够。不敢搞,想着队友智商好,他们搞吧。可是没出来这题......
以后不论什么时候,都自信点....该想的还是好好自己想,这类题感觉就是先去找性质,然后一点点找规律,假设必要的话。自己提出一点猜想。然后假设自己举不出来反例,就临时觉得是正确的
下午搞了一下午。发现还是悲剧,晚上參考了两个题解
http://blog.csdn.net/keshuai19940722/article/details/40039975
事实上至少能够总结出来一下规律:
1、必须num(*)<num(数字)
2、前面全是数字的后面全是*是合法的。就是说,假设须要交换的话,能够把*全换到最后,就是把*和最后的数字交换位置,反正每次耗费都是1
3、由于交换一次耗费为1,插入一次耗费也是1,所以假设不满足规律1,能够先插入,又由于规律2,所以把数字在一開始就所有插入到最前面,用栈模拟后缀表达式的验证过程,假设缺数字。就把最后的数字和当前的*交换位置,根据是规律2.不会缺星号的。由于连续的数字能够当做同一个数字
以上三条足够解决这个问题
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std; const int MAXN = 1000+50;
#define CL(a,b) memset(a,b,sizeof(a))
#define ll long long
#define ull unsigned long long
#define IN(s) freopen(s,"r",stdin) char str[MAXN],sta[MAXN*10];
int pos[MAXN*10];
int len,numa,numb,tp,postp; void init()
{
tp=postp=0;
numa=numb=0;//
scanf("%s",str);
len=strlen(str);
} ll solve()
{
for(int i=0;i<len;i++)
{
if(str[i] == '*')
numa++;
else
{
numb++;
pos[postp++]=i;
}
}
if(numa == 0)return 0;//****特判
ll ans=0;
tp=max(numa+1-numb,0);//假设数字多。总是能够组合出来的
//在开头补上数字
ans=(ll)tp;
for(int i=0;i<len;i++)
{
if(str[i] == '*'){
if(tp>=2)tp--;
else{
str[pos[postp-1]]='*';
postp--;
tp++;
ans++;//交换没有强调相邻
}
}
else
tp++;
}
if(ans==0 && str[len-1]!='*')ans++;//
return ans;
} int main()
{
//IN("K.txt");
int ncase;
scanf("%d",&ncase);
while(ncase--)
{
init();
printf("%lld\n",solve());
}
return 0;
}
ZOJ 3829 贪心 思维题的更多相关文章
- 贪心/思维题 Codeforces Round #310 (Div. 2) C. Case of Matryoshkas
题目传送门 /* 题意:套娃娃,可以套一个单独的娃娃,或者把最后面的娃娃取出,最后使得0-1-2-...-(n-1),问最少要几步 贪心/思维题:娃娃的状态:取出+套上(2),套上(1), 已套上(0 ...
- 贪心/思维题 UVA 11292 The Dragon of Loowater
题目传送门 /* 题意:n个头,m个士兵,问能否砍掉n个头 贪心/思维题:两个数组升序排序,用最弱的士兵砍掉当前的头 */ #include <cstdio> #include <c ...
- 【贪心 思维题】[USACO13MAR]扑克牌型Poker Hands
看似区间数据结构的一道题 题目描述 Bessie and her friends are playing a unique version of poker involving a deck with ...
- hdu 4803 贪心/思维题
http://acm.hdu.edu.cn/showproblem.php?pid=4803 话说C++还卡精度么? G++ AC C++ WA 我自己的贪心策略错了 -- 就是尽量下键,然后上 ...
- PAT 甲级 1067 Sort with Swap(0, i) (25 分)(贪心,思维题)*
1067 Sort with Swap(0, i) (25 分) Given any permutation of the numbers {0, 1, 2,..., N−1}, it is ea ...
- 51nod 1563 坐标轴上的最大团(今日gg模拟第一题) | 线段覆盖 贪心 思维题
51nod 1563 坐标轴上的最大团 坐标轴上有n个点,每个点有一个权值.第i个点的坐标是 xi ,权值是 wi .现在对这些点建图.对于点对 (i,j) ,如果 |xi−xj|≥wi+wj ,那么 ...
- Beauty of Array ZOJ - 3872(思维题)
Edward has an array A with N integers. He defines the beauty of an array as the summation of all dis ...
- codeforce 436 D贪心思维题Make a Permutation!
D. Make a Permutation! time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- HDU 6047 贪心思维题
Maximum Sequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
随机推荐
- larbin是一种开源的网络爬虫/网络蜘
larbin是一种开源的网络爬虫/网络蜘蛛,由法国的年轻人 Sébastien Ailleret独立开发.larbin目的是能够跟踪页面的url进行扩展的抓取,最后为搜索引擎提供广泛的数据来源.Lar ...
- CMAKE的使用
CMAKE的使用 Version 1.0 2009-3-18 一. 基本使用 安装:下载二进制包后可直接解压使用 从源码安装则执行命令:./bootstrap; make; make ins ...
- Codeforces Round #FF (Div. 2):C. DZY Loves Sequences
C. DZY Loves Sequences time limit per test 1 second memory limit per test 256 megabytes input standa ...
- WinDbg分析DUMP文件
1. 如何生成dump文件? 原理:通过SetUnhandledExceptionFilter设置捕获dump的入口,然后通过MiniDumpWriteDump生成dump文件: ...
- Solr搜索结果说明
在admin页面,输入相关内容后,会返回xml格式的内容.说明如下: [html] view plaincopy <?xml version="1.0" encoding=& ...
- 基于visual Studio2013解决C语言竞赛题之0801信息输出
题目
- MinGW是什么
MinGW是什么? MinGW是建立在gcc和binutils项目上的,用来编译和连接代码,使之运行在windows系统上: 提供c.c++和fortran编译器和相关工具: MinGW=Minima ...
- 机器时代的中国字幕(Automata.2014.720p.WEB-DL.DD5.1.H264-RARBG.srt)
看字幕.再也看不下去.自己翻译的位 评价的探讨 1 00:01:58,452 --> 00:02:02,088 人工增雨 期限为32分钟16第二 2 00:02:02,089 --> 00 ...
- Swift - iOS中各种视图控制器(View Controller)的介绍
在iOS中,不同的视图控制器负责不同的功能,采用不同的风格向用户呈现信息.下面对各个视图控制器做个总结: 1,标准视图控制器 - View Controller 这个控制器只是用来呈现内容.通常会用来 ...
- sql server 实现sleep延时
sql server中实现与C++ 中Sleep类似的功能,可以使用 waitfor delay '00:00:00:10' 表示延时10毫秒