题意:

百度。

思路:

如果该查询的R比前面的所有都大,那么前面所有都失效。

那么我先预处理出这些有效的。

那最坏的情况不就是栈里面元素(R)很多

n,n-1,n-2,n-3,n-4而且都是相反排序的。。。

总不能每次都那样循环一下,跟着他变吧。

所以找特性:

如果有序列132456

我的栈是

1 6

2 5

1 3

2 2

那么第一步从sort完:123456,那么这个a[6]=6肯定是确定了对吧。

继续看 2 5:我们能确定 a[5]=1,a[4]=2 对吧

继续看1 3 :我们能确定a[3]=5。

继续看2 2:我们能确定a[2]=3,a[1]=4.

最后输出。这样我觉得仔细自己想想就能瞎搞出来了!自己想出来的方法才有乐趣啊~

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
const int N=2e5+10;
struct asd{
int flag;
int R;
}e[N];
stack<asd>q;
int a[N],b[N][2];
int tp[N];
bool cmp(int x,int y)
{
return x>y;
}
int main()
{
asd now,nex;
int n,t;
scanf("%d%d",&n,&t);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<=t;i++)
scanf("%d%d",&e[i].flag,&e[i].R);
for(int i=1;i<=t;i++)
{
while(!q.empty()&&q.top().R<e[i].R)
q.pop();
if(!q.empty()&&e[i].flag==q.top().flag)
continue;
q.push(e[i]);
}
int num=0;
while(!q.empty())
{
num++;
b[num][0]=q.top().flag;b[num][1]=q.top().R;
q.pop();
}
if(b[num][0]==1)
sort(a+1,a+b[num][1]+1);
else
sort(a+1,a+b[num][1]+1,cmp);
if(num==1)
{
for(int i=1;i<=n;i++)
printf("%d ",a[i]);
return 0;
}
int ii=n,jj=1,ij=n;
int s=1;
for(;ij>b[num][1];ij--,ii--)
tp[ij]=a[ij];
for(int i=num;i>=2;i--)
{
int cnt=b[i][1]-b[i-1][1];
if(s%2==0)
for(int p=1;p<=cnt;p++,ij--,jj++)
tp[ij]=a[jj];
else
for(int p=1;p<=cnt;p++,ij--,ii--)
tp[ij]=a[ii];
s++;
}
if(s%2==0)
for(int p=1;p<=b[1][1];p++,ij--,jj++)
tp[ij]=a[jj];
else
for(int p=1;p<=b[1][1];p++,ij--,ii--)
tp[ij]=a[ii];
for(int i=1;i<=n;i++)
printf("%d ",tp[i]);
return 0;
}
/*
6 4
1 3 4 5 2 6
1 6
2 5
1 3
2 2
*/

Codeforces631C【栈维护+瞎搞】的更多相关文章

  1. URAL 1203. Scientific Conference(瞎搞)

    题目链接 本来觉得这不是经典的贪心吗..果断水一次,wa了,看了看discuss,发现貌似不好水,土土的DP了一下,复杂度很高了,又T了...然后想想单调队列,二分什么的...不好往上加,直接搞了标记 ...

  2. Codeforces Gym 100610 Problem H. Horrible Truth 瞎搞

    Problem H. Horrible Truth Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/1006 ...

  3. [置顶] hdu 4699 2个栈维护 or 伸展树

    hdu 4699  Editor 题意:对一个数列进行操作,光标位置后面插入一个权值为x的数,删除光标前的那个数,光标左移一位,光标右移一位,求到k位置的最大的前缀和.. 注意这里的k是在光标之前的, ...

  4. UVA1619 栈维护递增序列

    先说这题的关键性质:每一个数应该只会计算一次,它有一个最小区间[L,R],即它在这个区间内是最小的,最小区间内任何包含它的子区间都不会大于F(L,R)=(a[L]+...+a[R])*min(a[l] ...

  5. CF797F Mice and Holes 贪心、栈维护DP

    传送门 首先\(\sum c\)有些大,考虑将其缩小降低难度 考虑一个贪心:第一次所有老鼠都进入其左边第一个容量未满的洞(如果左边没有就进入右边第一个未满的洞),第二次所有老鼠都进入其右边第一个容量未 ...

  6. B. Salty Fish Go! -期望题(瞎搞题)

    链接:https://www.nowcoder.com/acm/contest/104/B来源:牛客网 题意:A few days ago, WRD was playing a small game ...

  7. HDU5532 Almost Sorted Array(最长上升子序列 or 瞎搞个做差的数组)

    题目链接:点我 题意:给定一个序列,询问是否能删除一个数让它成为非递减或者非递增的序列. 比如说 删除后的序列是1 3 3 5 或者5 3 3 1 或者1 3 5 或者5 3 1 都可以.只要满足删掉 ...

  8. TOJ3097: 单词后缀 (字典树 or map瞎搞)

    传送门 (<---可以点击的~) 时间限制(普通/Java):1000MS/3000MS     内存限制:65536KByte 描述 有些英语单词后缀都是一样的,现在我们需要从给定的一堆单词里 ...

  9. bzoj1007: [HNOI2008]水平可见直线 单调栈维护凸壳

    在xoy直角坐标平面上有n条直线L1,L2,...Ln,若在y值为正无穷大处往下看,能见到Li的某个子线段,则称Li为可见的,否则Li为被覆盖的.例如,对于直线:L1:y=x; L2:y=-x; L3 ...

随机推荐

  1. HDU 5247 找连续数 (set妙用)

    找连续数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  2. 基于GeoEvent Processor的物联网应用案例赏析

    1 技术路线 下面全部应用,都採用ArcGIS for Server,结合GeoEvent产品(为一款物联网实时数据集成处理产品)开发完毕. 2 应用场景 1.1   物联网实时态势感知 1.1.1 ...

  3. Java for LeetCode 110 Balanced Binary Tree

    Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...

  4. NodeJs如何全局统一处理异常,实现RestFull风格

    当在controller中处理客户端发来的数据时,我们会去校验数据,当数据错误时,我们会给客户端返回一个信息,如: export function add (req, res, next) { con ...

  5. LightOJ - 1284 Lights inside 3D Grid —— 期望

    题目链接:https://vjudge.net/problem/LightOJ-1284 1284 - Lights inside 3D Grid    PDF (English) Statistic ...

  6. php设计模式课程---5、责任链模式是什么

    php设计模式课程---5.责任链模式是什么 一.总结 一句话总结: 自己权限不够,就交给上级处理 1.选择结构怎么做到面向对象开闭原则? 也就是说if,都可以用接口的实现来实现,这样就避免了更新的时 ...

  7. linux应用之bugfree的安装及配置

    Bugfree3.0.4 Linux环境安装指南 bugfree系统安装的前提是,配置LAMP环境(apache+mysql+php),下面以centos6.3系统为例介绍bugfree3.0.4的安 ...

  8. codeforces 703B B. Mishka and trip(数学)

    题目链接: B. Mishka and trip time limit per test 1 second memory limit per test 256 megabytes input stan ...

  9. Python: scikit-image 图像的基本操作

    这个用例说明Python 的图像基本运算 import numpy as np from skimage import data import matplotlib.pyplot as plt cam ...

  10. ACM学习历程—Hihocoder 1177 顺子(模拟 && 排序 && gcd)(hihoCoder挑战赛12)

      时间限制:6000ms 单点时限:1000ms 内存限制:256MB   描述 你在赌场里玩梭哈,已经被发了4张牌,现在你想要知道发下一张牌后你得到顺子的概率是多少? 假定赌场使用的是一副牌,四种 ...