专栏文章
题解:P14405 [JOISC 2015] 复制粘贴 2 / Copy and Paste 2
P14405题解参与者 2已保存评论 3
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mincegc2
- 此快照首次捕获于
- 2025/12/02 00:07 3 个月前
- 此快照最后确认于
- 2025/12/02 00:07 3 个月前
思路:
我们发现 的值很小。在 的时间复杂度可过。我们可以让时间倒流,找到最终字符串的位置 在原字符串的位置即可。我们直接对其模拟即可。那么动态规划在哪?
模拟过程只需简单推导即可。具体地,有如下讨论:
其中 是复制字符串的长度。这个题就做完了。
AC code:
CPP#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+5;
int k, m, n;
char s[N];
struct node {
int a, b, c, l;
} ac[N];
int main() {
cin >> k >> m ;
scanf("%s", s + 1);
cin >> n;
for (int i = n; i >= 1; i--) {
cin >> ac[i].a >> ac[i].b >> ac[i].c;
ac[i].l = ac[i].b - ac[i].a;
}
for (int i = 1; i <= k; i++) {
int now = i;
for (int j = 1; j <= n; j++) {
if (ac[j].c + 1 <= now && now <= ac[j].c + ac[j].l) {
now = ac[j].a + (now - ac[j].c);
} else if (ac[j].c + ac[j].l < now) {
now -= ac[j].l;
}
}
cout << s[now] ;
}
return 0;
}
相关推荐
评论
共 3 条评论,欢迎与作者交流。
正在加载评论...