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) ...
随机推荐
- python _thread模块使用
python关于线程管理的有2个类,_thread(在2.x的版本中叫thread)和threading. # encoding: UTF-8 import thread import time ...
- cocos2d-x游戏开发系列教程-超级玛丽01-前言
前言 上次用象棋演示了cocos2dx的基本用法,但是对cocos2dx并没有作深入的讨论,这次以超级马里奥的源代码为线索,我们一起来学习超级马里奥的实现,并以一些篇幅来详细讲述遇到的具体问题和具体的 ...
- Smarty - 安装+入门小例子
环境: smarty 1.在http://www.smarty.net/download下载最新smarty包,window选择zips,linux下选择tar.gz.以windows为例,下载后解压 ...
- 相对路径与绝对路径构造file对象
package file; import java.io.File; public class FileTest1 { public static void main(String[] args) { ...
- [HTML5实现人工智能]小游戏《井字棋》发布,据说IQ上200才能赢
一,什么是TicTacToe(井字棋) 本 游戏 为在下用lufylegend开发的第二款小游戏.此游戏是大家想必大家小时候都玩过,因为玩它很简单,只需要一张草稿纸和一只笔就能开始游戏,所以广受儿 ...
- c++,初始化列表
类对象的构造顺序是这样的: a.分配内存,调用构造函数时,隐式/显示的初始化各数据成员 b.进入构造函数后在构造函数中执行一般计算 1.初始化类的成员有两种方式,一是使用初始化列表,二是在构造函数体内 ...
- 第1章 软件测试基本概念(Week1,3月3日)
一.对软件的认识 1. 什么是软件 2. 软件的分类 3. 软件开发的生命周期模型 (1)瀑布模型 (2)Scrum 其实对用瀑布模型这种臃肿不堪.要求严格.而无法适应软件开发周期变化的开发模型,渐渐 ...
- 一个必用的javascript框架:underscore.js - wine的思考 - ITeye技术网站
AngularJS+JqueryMobile+PhoneGap 打造APP « Dogeek AngularJS+JqueryMobile+PhoneGap 打造APP
- 50个Android开发技巧(11 为文字加入特效)
问题:怎样构建一个模拟LED数字时钟的页面?效果例如以下图所看到的: (原文地址:http://blog.csdn.net/vector_yi/article/details/24460227) 分析 ...
- Atitit.dwr3 不能显示错误具体信息的解决方式,控件显示错误具体信息的解决方式 java .net php
Atitit.dwr3 不能显示错误具体信息的解决方式,控件显示错误具体信息的解决方式 java .net php 1. Keyword/subtitle 1 2. 使用dwr3的异常convert处 ...