hdu6215 Brute Force Sorting(模拟)】的更多相关文章

地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6215 题目: Brute Force Sorting Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 496    Accepted Submission(s): 119 Problem Description Beerus need…
题意 给一个长度为n(n<=1e5)的序列,如果一个位置i满足a[i-1]>a[i]或者a[i]>a[i+1],那么我们就称该位置是不合法的位置 先把序列中所有不合法的位置统一找出来,然后再一起删除,剩下的合并成一个新序列 再对新序列重复操作,直至最后每个位置都是合法的 现在你需要输出最后的序列长什么样 分析 如果根据题意用链表去直接暴力模拟那么会T 会T的原因就是可能有很多不应该被删除的位置我们去从前往后遍历了很多遍 注意发现一个规律,某一次可能的不合法位置一定是上一次不合法位置的左边…
一层一层删 链表模拟 最开始写的是一个一个删的 WA #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #define TS printf("!!!\n") #define pb push_back //std::ios::sync_with_stdio(false); using namespace std; //priority_queue<…
Brute Force Sorting Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 1043    Accepted Submission(s): 272 Problem Description Beerus needs to sort an array of N integers. Algorithms are not Beerus…
Brute Force Sorting Time Limit: 1 Sec  Memory Limit: 128 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=6215 Description Beerus needs to sort an array of N integers. Algorithms are not Beerus's strength. Destruction is what he excels. He can destr…
题意:给你长度为n的数组,定义已经排列过的串为:相邻两项a[i],a[i+1],满足a[i]<=a[i+1].我们每次对当前数组删除非排序过的串,合并剩下的串,继续删,直到排序完成. 题解:用双向链表模拟删除过程即可. 具体细节见代码: #include<cstdio> #include<cstring> #define N 200010 using namespace std; int T,n,i,a[N],out[N],next[N],pre[N],r,pos[N],l;…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6215 题解:类似双链表的模拟. #include <iostream> #include <cstring> #include <cstdio> using namespace std; ; int a[M] , Next[M] , pre[M] , que[M]; int main() { int t; scanf("%d" , &t); wh…
题目链接 Problem Description Beerus needs to sort an array of N integers. Algorithms are not Beerus's strength. Destruction is what he excels. He can destroy all unsorted numbers in the array simultaneously. A number A[i] of the array is sorted if it sat…
题目链接 题意 给出一个长度为n的数组,每次操作都要删除数组里面非递增的元素,问最终的数组元素有什么. 思路 容易想到用链表模拟删除,但是不能每次都暴力枚举,这样复杂度O(N^2).想到每次删除元素的时候只会影响前后,因此考虑从前面一个位置开始检查,而不用每次都扫一遍.每次check的时候,发现了不符合题意的情况要把前面的数或者后面的数一起放进vector等待删除.然后删除vector里面把每次删除的数的前面放进一个队列,这个队列里面的值就是等待check的,而且用一个标记数组记录删除了哪些元素…
http://acm.hdu.edu.cn/showproblem.php?pid=6215 题意:给出一个序列,对于每个数,它必须大于等于它前一个数,小于等于后一个数,如果不满足,就删去.然后继续去判断剩下的数,直到最后都满足. 思路: 建立双向链表,如果一个数是需要删除的,那么它只会影响它前一个的数和后一个的数,这样只需要把它前面的数保存下来,下次再跑即可. #include<iostream> #include<algorithm> #include<cstring&g…