题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=825&pid=1002
水题,直接模拟就行
ac代码:
#include <iostream>
#include <cstdio>
#include <list>
#include <algorithm>
using namespace std;
const int MAXN = 150000;
list<int> l[MAXN];
inline int read() {
int x = 0; char ch = getchar();
if (ch == EOF) return -1;
while (ch<'0' || ch>'9') ch = getchar();
while (ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); }
return x;
}
int main() {
int n, q, r, u, v, w, val;
n = read();
while (n != -1) {
for (int i = 0; i<n; i++) l[i].clear();
q = read();
while (q--) {
r = read();
switch (r) {
case 1:
u = read(); w = read(); val = read();
w ? l[u].push_back(val) : l[u].push_front(val);
break;
case 2:
u = read(); w = read();
if (!l[u].empty()) { printf("%d\n", w ? l[u].back() : l[u].front()); w ? l[u].pop_back() : l[u].pop_front(); }
else printf("-1\n");
break;
case 3:
u = read(); v = read(); w = read();
if (w) l[v].reverse();
l[u].splice(l[u].end(), l[v]);
list<int> lt;
l[v] = lt;
break;
}
}
n = read();
}
return 0;
}
今天就过了两个水题,排列那个没做出来。。。希望明天大佬不要 来虐我们了qaq