hihoCoder 1523 数组重排2 贪心
题意:给定一个1-N的排列A1, A2, … AN,每次操作小Hi可以选择一个数,把它放到数组的最左边。
请计算小Hi最少进行几次操作就能使得新数组是递增排列的。
思路:最后的序列是递增的,那么必定满足,表示数字最终的位置。如果当前的此时必须把i移到最左边,就这样依次处理n-1到1就行。
AC代码
#include <cstdio>
#include <cmath>
#include <cctype>
#include <bitset>
#include <algorithm>
#include <cstring>
#include <utility>
#include <string>
#include <iostream>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <stack>
using namespace std;
#pragma comment(linker, "/STACK:1024000000,1024000000")
#define eps 1e-10
#define inf 0x3f3f3f3f
#define pii pair<int, int>
typedef long long LL;
const double PI = acos(-1.0);
const int maxn = 1e5 + 5;
int a[maxn], pos[maxn];
int main() {
int n;
while(scanf("%d", &n) == 1) {
int tol = 0;
for(int i = 1; i <= n; ++i) {
scanf("%d", &a[i]);
pos[a[i]] = i;
}
int now = 0;
for(int i = n-1; i >= 1; --i) {
if(pos[i+1] < pos[i]) {
pos[i] = now--;
tol++;
}
}
printf("%d\n", tol);
}
return 0;
}
如有不当之处欢迎指出!
hihoCoder 1523 数组重排2 贪心的更多相关文章
- hihocoder 1523:数组重排2
题目链接 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个1-N的排列A1, A2, ... AN,每次操作小Hi可以选择一个数,把它放到数组的最左边. 请计算小 ...
- hihocoder 1523 数组重排2+思维
参考:http://blog.csdn.net/howardemily/article/details/74991367 题意:每次可以移动数组中的一个数到数组的最左边,问最少操作数,使得数列升序: ...
- hihocoder 1330 - 数组重排 - [hiho一下167周][最小公倍数]
题目链接:https://hihocoder.com/problemset/problem/1330 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi想知道,如果他 ...
- 【bzoj5073】[Lydsy1710月赛]小A的咒语 后缀数组+倍增RMQ+贪心+dp
题目描述 给出 $A$ 串和 $B$ 串,从 $A$ 串中选出至多 $x$ 个互不重合的段,使得它们按照原顺序拼接后能够得到 $B$ 串.求是否可行.多组数据. $T\le 10$ ,$|A|,|B| ...
- hihoCoder 数组重排
找每个位置循环节的大小. 得到结果d1, d2, ....., dn. 最终结果cmd(d1, d2, ...., dn). 水题. 题目链接: http://hihocoder.com/contes ...
- hihoCoder 1051 补提交卡(贪心,枚举)
#1051 : 补提交卡 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序.100天过 ...
- hihoCoder1330 数组重排
题意 小Hi想知道,如果他每次都按照一种固定的顺序重排数组,那么最少经过几次重排之后数组会恢复初始的顺序? 具体来讲,给定一个1 - N 的排列 P,小Hi每次重排都是把第 i 个元素放到第 Pi个位 ...
- LeetCode1005 K次取反后最大化的数组和(贪心+Java简单排序)
题目: 给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次.(我们可以多次选择同一个索引 i.) 以这种方式修 ...
- hihoCoder 后缀数组 重复旋律
#1403 : 后缀数组一·重复旋律 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为长度为 N 的数构成 ...
随机推荐
- relative 和 absolute 定位关系
问题: relative 和 absolute 之间的关系是什么?有什么区别? 那,答案呢? relative 相对定位, 以自己没有设置relative 属性之前的位置来定位,占用没有设置rela ...
- GPU 实现 RGB -- YUV 转换 (OpenGL)
GPU 实现 RGB -- YUV 转换 前言 RGB --> YUV 转换的公式是现成的,直接在 CPU 端转换的话,只需要遍历每个像素,得到新的 YUV 值,根据其内存分布规律,合理安排分布 ...
- 微信屏蔽js分享、复制链接
页面内引入js(不放在页面内部不起作用) $(function(){ function onBridgeReady() { WeixinJSBridge.call('hideOptionMenu'); ...
- GDB 的使用
gdb使用: 1.编译时必须加-g选项,生成调试需要的信息.如 g++ xxx.cpp -o xxx -g 2.调试最好结合core文件 3.调试命令:gdb xxx x ...
- Hibernate (一)
1 JDBC的优缺点 优点: 直接底层操作,提供了简单.便捷的访问数据库的方法,跨平台比较强. 灵活性比较强,可以写复杂的SQL. 缺点: JDBC没有做到面向对象的编程,使得程序员的思考还停留在SQ ...
- $.ajax()实现简单计算器
1.html页面 a.html <!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- SpringMVC数据验证(AOP处理Errors和方法验证)
什么是JSR303? JSR 303 – Bean Validation 是一个数据验证的规范,2009 年 11 月确定最终方案. Hibernate Validator 是 Bean Valida ...
- editplus 常用正则
EditPlus的查找,替换,文件中查找支持以下的正则表达式: Expression Description\t Tab character.\n New line.. Matches any cha ...
- 基于redis的cas实现
cas是我们常用的一种解决并发问题的手段,小到CPU指令集,大到分布式存储,都能看到cas的影子.本文假定你已经充分理解一般的cas方案,如果你还不知道cas是什么,请自行百度 我们在进行关系型数据库 ...
- .Neter玩转Linux系列之四:Linux下shell介绍以及TCP、IP基础
基础篇 .Neter玩转Linux系列之一:初识Linux .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限 .Neter玩转Linux系列之三:Linux下的分区讲解 .N ...