HDU 6215 2017Brute Force Sorting 青岛网络赛 队列加链表模拟
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6215
题意:给你长度为n的数组,定义已经排列过的串为:相邻两项a[i],a[i+1],满足a[i]<=a[i+1]。我们每次对当前数组删除非排序过的串,合并剩下的串,继续删,直到排序完成。
解法:双向链表模拟过程,设置一个队列,用于存可能产生非排序过的串的头结点,每次从队列中拿出一个头结点判断后面的情况,若还能继续删除,则将头结点的上一个结点放入队列继续判,知道没有别的结点为止。
#include <bits/stdc++.h>
using namespace std;
const int maxn = 100010;
int a[maxn], Next[maxn], Last[maxn];
int que[maxn], top; int main()
{
int T, n;
scanf("%d", &T);
while(T--){
scanf("%d", &n);
a[0] = 0;
Next[0] = 1;
Last[n+1] = n;
int ans = n;
for(int i=1; i<=n; i++){
Next[i] = i+1;
Last[i] = i-1;
scanf("%d", &a[i]);
que[top++] = i;
}
int flag = 1;
while(flag)
{
flag = 0;
int s = 0;
int now = 0;
while(now < top){
int item = que[now];
int len = 0;
while(Next[item]<=n){
if(a[item] > a[Next[item]]){
len++;
flag = 1;
item = Next[item];
}
else break;
}
if(len) ans = ans - len - 1;
if(len){
Next[Last[que[now]]] = Next[item];
Last[Next[item]] = Last[que[now]];
que[s++] = Last[que[now]];
}
while(now < top && que[now] <= item) now++;
}
top = s;
}
printf("%d\n", ans);
int now = 0;
while(now <= n){
if(now != 0) printf("%d ", a[now]);
now = Next[now];
}
printf("\n");
}
return 0;
}
HDU 6215 2017Brute Force Sorting 青岛网络赛 队列加链表模拟的更多相关文章
- HDU 6215 Brute Force Sorting(模拟链表 思维)
Brute Force Sorting Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Othe ...
- HDU 6215 Brute Force Sorting(链表)
http://acm.hdu.edu.cn/showproblem.php?pid=6215 题意:给出一个序列,对于每个数,它必须大于等于它前一个数,小于等于后一个数,如果不满足,就删去.然后继续去 ...
- hdu 6215 Brute Force Sorting(模拟)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6215 题解:类似双链表的模拟. #include <iostream> #include ...
- hdu 5881 Tea (2016 acm 青岛网络赛)
原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=5881 Tea Time Limit: 3000/1000 MS (Java/Others) Me ...
- hdu 6215 -- Brute Force Sorting(双向链表+队列)
题目链接 Problem Description Beerus needs to sort an array of N integers. Algorithms are not Beerus's st ...
- HDU 6215 Brute Force Sorting 模拟双端链表
一层一层删 链表模拟 最开始写的是一个一个删的 WA #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) mem ...
- HDU 5880 Family View (2016 青岛网络赛 C题,AC自动机)
题目链接 2016 青岛网络赛 Problem C 题意 给出一些敏感词,和一篇文章.现在要屏蔽这篇文章中所有出现过的敏感词,屏蔽掉的用$'*'$表示. 建立$AC$自动机,查询的时候沿着$fa ...
- HDU 4768 Flyer (2013长春网络赛1010题,二分)
Flyer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- HDU 4747 Mex (2013杭州网络赛1010题,线段树)
Mex Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submis ...
随机推荐
- java 自动装箱
Java 编译器把原始类型自动转换为封装类的过程称为自动装箱(autoboxing),相当于调用包装类的valueof方法.举例说明: 源码: 编译之后的代码:
- MQTT - Connect报文解析
#include <bits/stdc++.h> using namespace std; int main() { ] = { /* * 固定报头: MQTT报文类型(1), 保留位 * ...
- jQuery map和each用法
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Windows Shell远程执行代码漏洞((CVE-2018-8414)复现
0x00 SettingContent-ms文件介绍 .SettingContent-ms是在Windows 10中引入的一种文件类型,它的内容是XML格式进行编写的,主要用于创建Windows设 ...
- 团体程序设计天梯赛 L1-006. 连续因子
Two ways: 1.接近O(n) #include <stdio.h> #include <stdlib.h> #include <math.h> int ma ...
- pytorch文档阅读(一)
本章主要针对pytorch0.4.0英文文档的前两节,顺序可能有些不一样: torch torch.Tensor 张量 Tensors Data type CPU tensor GPU tensor ...
- Dubbo、Zookeeper集群搭建及Rose使用心得(二)
上篇讲了一下配置,这次主要写一下这个框架开发的大概流程.这里以实现 登陆 功能为例. 一.准备工作 1.访问拦截器 用户在进行网站访问的时候,有可能访问到不存在的网页,所以,我们需要把这些链接重新定向 ...
- BZOJ 3771 母函数裸题
题目描述 我们讲一个悲伤的故事. 从前有一个贫穷的樵夫在河边砍柴. 这时候河里出现了一个水神,夺过了他的斧头,说: “这把斧头,是不是你的?” 樵夫一看:“是啊是啊!” 水神把斧头扔在一边,又拿起一个 ...
- jsp的四大作用域
http://lavasoft.blog.51cto.com/62575/275586/ jsp中四个作用域的区别 JSP内置对象作用域表 名称 作用域 application 在所有应用程序中有效, ...
- poj 2774 后缀数组 两个字符串的最长公共子串
Long Long Message Time Limit: 4000MS Memory Limit: 131072K Total Submissions: 31904 Accepted: 12 ...