POJ 3183:Stump Removal(模拟)
http://poj.org/problem?id=3183
题意:有n个树桩,分别有一个高度h[i],要用Bomb把树桩都炸掉,如果炸的位置的两边树桩高度小于Bomb炸的树桩高度,那么小于树桩高度的两侧都是可以被炸掉的。而且有传递性。求把树桩全部炸掉要消耗的最少的Bomb数所炸的位置。
看样例: 1 2 5 4 3 3 6 6 2
炸位置3(即5)的话,那么2小于5,所以位置2被炸掉,因为1小于2,所以位置1被炸掉,因为4小于5,所以位于4被炸掉,因为3小于4,所以位置5被炸掉。因此丢一个Bomb到位置3就可以炸掉第1~5个树桩了。
思路:这道题因为看错OJ所以出现在RMQ专题里面。还想了一下RMQ怎么做...直接模拟就好了。(zhayao居然是违禁内容,只能用Bomb代替)
用一个flag判断当前序列是上升还是下降。如果是开始下降了,这个时候i-1就是顶峰,i-1这个位置肯定就是答案之一。还有等于的情况,如果之前的趋势是下降的,那么i-1并不会是答案,如果是上升的,那么i-1是答案,判完一次后把序列标记为上升。还有一个点在于,如果最后的序列是上升的,还要把n放入答案。
#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
#define N 50010
#define INF 0x3f3f3f3f
vector<int> vec;
int h[N]; int main() {
int n;
while(~scanf("%d", &n)) {
for(int i = ; i <= n; i++) scanf("%d", &h[i]);
int ans = ;
vec.clear();
int l = , tmp = h[], flag = ;
for(int i = ; i <= n; i++) {
if(h[i] > tmp) { if(!flag) {flag = ;} }
else if(h[i] == tmp) { if(flag) vec.push_back(i-); flag = ; }
else { if(flag) vec.push_back(i-); flag = ; }
tmp = h[i];
}
if(flag) vec.push_back(n);
for(int i = ; i < vec.size(); i++) printf("%d\n", vec[i]);
}
return ;
}
/*
13
1
2
10
8
8
8
7
7
7
8
8
8
7
*/
POJ 3183:Stump Removal(模拟)的更多相关文章
- HDU 2494/POJ 3930 Elevator(模拟)(2008 Asia Regional Beijing)
Description Too worrying about the house price bubble, poor Mike sold his house and rent an apartmen ...
- poj 2632 Crashing Robots 模拟
题目链接: http://poj.org/problem?id=2632 题目描述: 有一个B*A的厂库,分布了n个机器人,机器人编号1~n.我们知道刚开始时全部机器人的位置和朝向,我们可以按顺序操控 ...
- POJ 2014 Flow Layout 模拟
http://poj.org/problem?id=2014 嘻嘻2014要到啦,于是去做Prob.ID 为2014的题~~~~祝大家新年快乐~~ 题目大意: 给你一个最大宽度的矩形,要求把小矩形排放 ...
- POJ 2632 Crashing Robots (模拟 坐标调整)(fflush导致RE)
题目链接:http://poj.org/problem?id=2632 先话说昨天顺利1Y之后,直到今天下午才再出题 TAT,真是刷题计划深似海,从此AC是路人- - 本来2632是道略微恶心点的模拟 ...
- poj 1888 Crossword Answers 模拟题
Crossword Answers Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 869 Accepted: 405 D ...
- POJ 2632 Crashing Robots 模拟 难度:0
http://poj.org/problem?id=2632 #include<cstdio> #include <cstring> #include <algorith ...
- poj 3253 Fence Repair(模拟huffman树 + 优先队列)
题意:如果要切断一个长度为a的木条需要花费代价a, 问要切出要求的n个木条所需的最小代价. 思路:模拟huffman树,每次选取最小的两个数加入结果,再将这两个数的和加入队列. 注意priority_ ...
- Code POJ - 1780(栈模拟dfs)
题意: 就是数位哈密顿回路 解析: 是就算了...尼玛还不能直接用dfs,得手动开栈模拟dfs emm...看了老大半天才看的一知半解 #include <iostream> #inclu ...
- POJ - 1835 宇航员(模拟题)
问题描述: 宇航员在太空中迷失了方向,在他的起始位置现在建立一个虚拟xyz坐标系,称为绝对坐标系,宇航员正面的方向为x轴正方向,头顶方向为z轴正方向,则宇航员的初始状态如下图所示: 现对六个方向分别标 ...
随机推荐
- WebAPI Delete方法报错405 Method Not Allowed
.net framework 在Web.config文件中添加如下配置: <system.webServer> <modules runAllManagedModulesForAll ...
- DELPHI7中 TObjectList sort排序问题
网上收集了一点东西 TOBJECTLIST里,有自带的排序功能 TLIST,TSTRINGLIST也有,MS是一样的 SORT里有一个参数: Compare:TListSortCompare 那我们先 ...
- sql server 查询存储过程指令
Sp_helptext PROCEDUREName 例子 创建存储过程 CREATE PROCEDURE SelectFromBitTable AS BEGIN select pkid,isdelet ...
- spring boot的默认配置
# BANNER banner.charset=UTF- # Banner file encoding. banner.location=classpath:banner.txt # Banner f ...
- JAVASCRIPT高程笔记-------第 七章 函数表达式
7.1递归 经典递归例子 function factorial(num){ if(num <= 1){ return 1; }else{ return num * factorial(num - ...
- wpf的webbrowser与javascript交互
JS调用C#代码 HTML代码: <button onclick="window.external.Test('called from script code')"> ...
- Android 查看Apk签名方式V1和V2
Android 查看Apk签名方式V1和V2 java -jar apksigner.jar verify -v my.apk -- Verifies Verified using v1 scheme ...
- Android adb你真的会用吗?
前言 本文基于Android官方文档, 以及个人工作的使用经验, 总结下adb的常用用法, 备忘. 1.adb 简介 adb全名Andorid Debug Bridge. 顾名思义, 这是一个Debu ...
- 使用IntelliJ IDEA开发SpringMVC网站(五)博客文章管理
原文:使用IntelliJ IDEA开发SpringMVC网站(五)博客文章管理 摘要 通过对博客文章的管理,实现外键操作. 目录[-] 八.博客文章管理 1.查看文章 2.添加博客 3 ...
- Android零基础入门第18节:EditText的属性和使用方法
原文:Android零基础入门第18节:EditText的属性和使用方法 EditText与TextView非常相似,它甚至与TextView 共用了绝大部分XML属性和方法.EditText与Tex ...