【题目链接】

https://www.lydsy.com/JudgeOnline/problem.php?id=2457

【算法】

贪心

【代码】

#include<bits/stdc++.h>
using namespace std;
#define MAXN 200010 int i,n,len,last,cnt;
int d[MAXN],tmp[MAXN],mx[MAXN],nx[MAXN];
bool flag; inline bool cmp(int a,int b)
{
return (d[a] == d[b]) ? (a < b) : (d[a] < d[b]);
} int main()
{ scanf("%d",&n);
for (i = ; i <= n; i++)
{
scanf("%d",&d[i]);
tmp[i] = i;
}
sort(tmp+,tmp+n+,cmp);
d[] = -;
for (i = ; i <= n; i++)
{
if (d[tmp[i]] != d[tmp[i-]])
{
len++;
nx[len] = mx[len] = tmp[i];
} else
{
nx[len] = min(nx[len],tmp[i]);
mx[len] = max(mx[len],tmp[i]);
}
}
flag = false;
cnt = ;
last = nx[];
for (i = ; i <= len; i++)
{
if (flag && nx[i] < last)
{
flag = false;
cnt++;
last = nx[i];
continue;
}
if (!flag && mx[i] > last)
{
flag = true;
last = mx[i];
continue;
}
if (!flag && mx[i] < last)
{
last = nx[i];
continue;
}
if (flag && nx[i] > last) last = mx[i];
}
printf("%d\n",cnt); return ; }

【BZOJ 2457】 双端队列的更多相关文章

  1. BZOJ 2457 - 双端队列 - [思维题]

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2457 Description Sherry现在碰到了一个棘手的问题,有N个整数需要排序. ...

  2. BZOJ 2457 双端队列(思维

    2457: [BeiJing2011]双端队列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 582  Solved: 253[Submit][Sta ...

  3. BZOJ 2457 双端队列

           Sherry 现在碰到了一个棘手的问题,有N个整数需要排序.        Sherry 手头能用的工具就是若干个双端队列.        她需要依次处理这 N 个数,对于每个数, Sh ...

  4. 【贪心】Bzoj 2457:[BeiJing2011]双端队列

    2457: [BeiJing2011]双端队列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 209  Solved: 95[Submit][Stat ...

  5. BZOJ 2457 [BeiJing2011] 双端队列

    2457: [BeiJing2011]双端队列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 340  Solved: 167[Submit][Sta ...

  6. bzoj 2457 [BeiJing2011]双端队列 模拟+贪心

    [BeiJing2011]双端队列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 457  Solved: 203[Submit][Status][D ...

  7. 2457: [BeiJing2011]双端队列

    2457: [BeiJing2011]双端队列 链接 很奇妙的转化. 题目要求最后的所有序列也是有序的,所以可以求出最后的序列(即排序后的序列),然后分成许多份,要求每一份都是一个双端序列,求最少分成 ...

  8. BZOJ2457 BeiJing2011 双端队列

    [问题描述] Sherry现在碰到了一个棘手的问题,有N个整数需要排序.  Sherry手头能用的工具就是若干个双端队列.        她需要依次处理这N个数,对于每个数,Sherry能做以下两件事 ...

  9. bzoj2457 双端队列

    虽然分类在数据结构里,但是实际上是个贪心题...... 我自己一开始想到了一个错误的贪心.后来发现对于相等值的处理不行. 有个很神的转化,就是把排好序的队列以及对应的原下标都给搞出来. 然后考虑其中一 ...

  10. lintcode二叉树的锯齿形层次遍历 (双端队列)

    题目链接: http://www.lintcode.com/zh-cn/problem/binary-tree-zigzag-level-order-traversal/ 二叉树的锯齿形层次遍历 给出 ...

随机推荐

  1. vue过渡 & 动画---进入/离开 & 列表过渡

    (1)概述 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.包括以下工具: 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Animat ...

  2. for循环,字典遍历(一)

    #items(): 返回字典中所有 key.value #keys(): 返回字典中所有 key 的列表 #values():返回字典中所有 value 的列表 my_dict = {'语文':89, ...

  3. 小程序button默认样式透彻理解

    微信小程序有一个默认样式,特别是有一个外边框,虽然看起来不别扭,但是自己每次设置border:0:都不生效,写成内联的样式也不生效,后来才知道里面的边框是伪元素的边框,这里的伪元素可以理解为用css动 ...

  4. css去掉div的滚动条

    懒得讲原理了,直接贴代码: css部分: .slide-box { margin-top: 200px; display: -webkit-box; overflow-x: scroll; overf ...

  5. docke容器使用

    Docker 容器使用 Docker 客户端 docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项. runoob@runoob:~# do ...

  6. Glossary in Turbulence

    Table of Contents 1. Concepts/Glossary 1.1. Turbulent eddy viscosity ,μt 1.2. Turbulent kinetic ener ...

  7. redis学习——系统管理

    Redis系统管理 实验简介 上一节实验讲述了Redis的基本数据类型,本实验继续讲解Redis相关命令及管理操作. 在Redis中,命令大小写不敏感. 一.适合全体类型的常用命令 启动redis服务 ...

  8. vue 添加axios解决post传参数为null问题

    本文主要参考: https://www.npmjs.com/package/axios http://jingyan.baidu.com/article/29697b916d6a7bab20de3cf ...

  9. Uva12657 Boxes in a Line

    题目链接:传送门 分析:每次操作都会花费大量时间,显然我们只需要关注每个元素的左边是啥,右边是啥就够了,那么用双向链表,l[i]表示i左边的数,r[i]表示i右边的数,每次操作模拟一下数组的变化就好了 ...

  10. codeforces 371c

    #include<stdio.h> int main() { char s[200]; __int64  r,nb,ns,nc,pb,ps,pc,i,sum,tob,tos,toc; wh ...