P1188 PASTE
Posted --840-114
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1188 PASTE相关的知识,希望对你有一定的参考价值。
题目不难理解 输入一组数 把其中的一部分剪切下来 然后放到要求的位置 然后原本的数字(未作改变的数字)依次往后退
就是这样理解的
但是要考虑是向前还是向后的移动 经过判断
最终的AC代码如下
#include <bits/stdc++.h> using namespace std; const int MAXN = 100000 + 5; int n, k; int a[MAXN], b[MAXN]; int p; int main() { for (int i = 1; i < MAXN; i++) a[i] = i; cin >> n >> k; for (int i = 1; i<= k; i++) { int s, t, p1, p2, q, len; cin >> s >> t >> q;//按要求输入 len = t - s + 1;//len:剪下文本长度 p1 = q + 1;//p1:插入起点 p2 = p1 + len - 1;//p2:插入尾标记 p = 0; for (int i = s; i <= t; i++) b[++p] = a[i]; if (q < s) for (int i = s - 1; i >= p1; i--) a[i + len] = a[i];//另一段文本向前(插入行在原文本第一行之后) else for (int i = t + 1; i <= p2; i++) a[i - len] = a[i];//向后(插入行在原文本第一行之前) for (int i = p2; i >= p1; i--) a[i] = b[p--];//把剪切的“停车入库” } for (int i = 1; i <= 10; i++) cout << a[i] << endl;//按要求输出就好了 return 0; }
拜拜!!!
以上是关于P1188 PASTE的主要内容,如果未能解决你的问题,请参考以下文章
BZOJ P1188 HNOI2007 分裂游戏——solution
Ocata Neutron代码分析——api-paste.ini分析
Linux 150命令之查看文件及内容处理命令 more split file diff paste wc dps2unix