HDU-2017 ACM/ICPC Asia Regional Qingdao Online-1010-Brute Force Sorting
来源:互联网 发布:年月日时干支推算法 编辑:程序博客网 时间:2024/06/14 12:10
ACM模版
描述
题解
这个题真心不难,典型的链表题,在
代码
One:
// TLE#include <iostream>#include <cstdio>using namespace std;const int MAXN = 1e5 + 10;int N;int A[MAXN];int pre[MAXN];int net[MAXN];int tmp[MAXN];template <class T>inline void scan_d(T &ret){ char c; ret = 0; while ((c = getchar()) < '0' || c > '9'); while (c >= '0' && c <= '9') { ret = ret * 10 + (c - '0'), c = getchar(); }}template <class T>inline void print_d(T x){ if (x > 9) { print_d(x / 10); } putchar(x % 10 + '0');}void init(int cnt){ // 构造链表结构 for (int i = 1; i <= cnt; ++i) { pre[i] = i - 1; net[i] = i + 1; } net[cnt] = A[0] = 0;}void _erase(int x){ int l = pre[x], r = net[x]; if (l) { net[l] = r; } if (r) { pre[r] = l; }}int main(int argc, const char * argv[]){ int T; scan_d(T); while (T--) { scan_d(N); init(N); if (N == 0) { print_d(0); putchar(10); putchar(10); continue; } for (int i = 1; i <= N; i++) { scan_d(A[i]); } int x = 1, y = N; while (1) { int tot = 0, t = x; while (t) { if (t != x && A[t] < A[pre[t]]) { tmp[tot++] = t; } if (t != y && A[t] > A[net[t]]) { if (tmp[tot - 1] != t) { tmp[tot++] = t; } } t = net[t]; } for (int i = 0; i < tot; i++) { if (tmp[i] == x) { x = net[tmp[i]]; pre[x] = 0; } if (tmp[i] == y) { y = pre[tmp[i]]; net[y] = 0; } _erase(tmp[i]); } if (!tot) { break; } } int cnt = 0; for (int i = x; i; i = net[i]) { cnt++; } print_d(cnt); putchar(10); if (cnt == 0) { putchar(10); } else { print_d(A[x]); for (int i = net[x]; i; i = net[i]) { putchar(' '); print_d(A[i]); } putchar(10); } } return 0;}
Two:
#include <iostream>#include <cstring>#include <vector>#include <set>#define PB push_backusing namespace std;const int MAXN = 1e6 + 7;int n, now, pre;int A[MAXN];int pe[MAXN];int nt[MAXN];int bz[MAXN];set<int> si;vector<int> vi;int main(void){ int T; cin >> T; while (T--) { memset(bz, 0, sizeof(bz)); scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", A + i); bz[i] = 0; pe[i] = i - 1; nt[i] = i + 1; si.insert(i); } nt[0] = 1, pe[n + 1] = n, pe[1] = 0, nt[n] = n + 1; A[0] = 0, A[n + 1] = MAXN; while (si.size()) { vi.clear(); for (auto &x : si) { int ntx = nt[x], pex = pe[x]; if (A[pex] > A[x]) { vi.PB(pex); vi.PB(x); } if (A[x] > A[ntx]) { vi.PB(x); vi.PB(ntx); } } si.clear(); for (auto &x : vi) { if (!bz[x]) { int ntx = nt[x], pex = pe[x]; nt[pex] = ntx, pe[ntx] = pex; si.insert(pex); bz[x] = 1; } } } int cnt = 0; for (int i = nt[0]; i != n + 1; i = nt[i]) { cnt++; } printf("%d\n", cnt); for (int i = nt[0]; i != n + 1; i = nt[i]) { printf("%d ", A[i]); } printf("\n"); } return 0;}
阅读全文
0 0
- 2017 ACM/ICPC Asia Regional Qingdao Online Brute Force Sorting
- HDU-2017 ACM/ICPC Asia Regional Qingdao Online-1010-Brute Force Sorting
- Brute Force Sorting 链表\模拟 [2017 ACM/ICPC Asia Regional Qingdao Online]
- HDu 6216 && 2017 ACM/ICPC Asia Regional Qingdao Online 1011
- HDU-2017 ACM/ICPC Asia Regional Qingdao Online-1001-Apple
- HDU-2017 ACM/ICPC Asia Regional Qingdao Online-补题
- 2017 ACM/ICPC Asia Regional Qingdao Online
- 2017 ACM/ICPC Asia Regional Qingdao Online
- 2017 ACM/ICPC Asia Regional Qingdao Online
- 2017 ACM/ICPC Asia Regional Qingdao Online
- HDU 5879 Cure 2016 ACM/ICPC Asia Regional Qingdao Online
- HDU 5884 Sort 2016 ACM/ICPC Asia Regional Qingdao Online
- HDU 5878 -- 丑数打表(2016 ACM/ICPC Asia Regional Qingdao Online)
- HDU 5878 -- 丑数打表(2016 ACM/ICPC Asia Regional Qingdao Online)
- 【2016 ACM/ICPC Asia Regional Qingdao Online】
- 2016 ACM/ICPC Asia Regional Qingdao Online
- 2016 ACM/ICPC Asia Regional Qingdao Online
- 2017 ACM/ICPC Asia Regional Qingdao Online--Chinese Zodiac
- 枚举 enum 细节
- 光环国际PMP:作为项目经理,什么事该不该做是你必须要知道的
- 在Struts2中使用ValueStack、ActionContext、ServletContext、request、session等
- python网络爬虫-正则表达式和BeautifulSoup
- Python 3爬虫网易云(五)—— 正则表达式下篇之HTML标签
- HDU-2017 ACM/ICPC Asia Regional Qingdao Online-1010-Brute Force Sorting
- opencv开发笔记(四):读取视频控制
- AOP(面向切面编程)
- JavaScript最佳新手入门系列(大话变量)
- mysql压缩包安装
- 场景图层和i3s标准在ArcGIS多平台的应用
- Android人脸识别--基于虹软免费SDK
- 什么是存储过程
- 基于dba_hist_sqlstat查看sql语句的性能历史