不知来源的题目(复制黏贴)

题意:  就是一个字符串s(只包含小写字母),现在可以复制黏贴从位置i到位置j的所有字符(位置x为第x个字符与第x+1个字符中间的空隙)放到位置k。  复制黏贴的总长度不超过m,求n次复制黏贴后前L个字符分别是什么。数据范围:  L <= 200; m <= 10^9; n <= 10^5; |s| <= 10^5;样例输入:
6 100
jjooii
3
5 6 2
4 6 1
1 2 3
我们发现如果暴力去模拟的话肯定会TLE(m <= 10^9),所以肯定不能暴力。我们再看要求输出的内容:前L(L <= 200)个字符,很舒服,所以应该就是从这里入手。首先我们想对于每一个i(1 <= i <= L),我们开始分类讨论:现在的位置记为P,刚开始P = i;从第n条指令到第1条:j从n到1。1,若P <= c[j] P肯定不会改变(在前面不会受到影响)2,若c[j] < p && p <= c[j] + b[j] - a[j], 则P += a[j] - c[j](P属于被复制的部分)3,若P > c[j] + b[j] - a[j] 则p -= b[j] - a[j](P属于往后挪的部分)上代码:
#include <bits/stdc++.h>
using namespace std;
const int SIZE = 2 * 1e5 + 10;
int L, m, n, a[SIZE], b[SIZE], c[SIZE];
char s[SIZE];
int main() {
    cin >> L >> m;
    scanf("%s", (s + 1));
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i] >> b[i] >> c[i];
    for (int i = 1; i <= k; i++) {
        int P = i;
        for (int j = n; j >= 1; j--) {
            if (P <= c[j]) {
                P = P;
            } else if (c[j] < ans && ans <= c[j] + b[j] - a[j]) {
                P += a[j] - c[j];
            } else {
                ans -= (b[j] - a[j]);
            }
        }
        cout << s[P];
    }
    puts("");
}

原文地址:https://www.cnblogs.com/zcr-blog/p/11469313.html

时间: 2024-08-30 09:07:33

不知来源的题目(复制黏贴)的相关文章

oninput事件(解决onkeyup无法监听到复制黏贴)

onkeyup无法监听到复制黏贴导致的内容变化,可以使用oninput事件 注:IE下 用 onpropertychange <textarea ng-keydown = "addReason(event)" oninput = "angular.element(this).scope().addReason(event)" onproperty = "angular.element(this).scope().addReason(event)&qu

让编辑器支持word的复制黏贴,支持截屏的黏贴

chrome有很多人性化的API,比如拖拽, 比如图片可以转化为base64等: 比如知乎上面的回复中可以直接黏贴图片,  就不需要手动点击图片上传按钮, 选择图片, 确认上传等等: 知乎参考地址:打开 让编辑器支持word的复制黏贴, 其中图片会转化为base64编码, 如果是通过远程打开这个静态页, 黏贴word文档的时候, 图片不会黏贴进来, 因为远程地址无法访问本地磁盘的绝对路径, 如果把下面代码保存成静态界面打开, 那么word中的图片都可以看见, 而且都会被转化为base64编码:

(转)xshell无法在vim中复制黏贴

ssh xshell 连接在vim中无法用 ctrl+insert 复制黏贴 修改.vimrc set mouse=c vi的三种模式:命令模式,插入模式,可视模式.鼠标可以启动于各种模式中: The mouse can be enabled for different modes: n Normal mode v Visual mode i Insert mode c Command-line mode h all previous modes when editing a help file

edittext屏蔽复制黏贴

如何屏蔽edittext长按的时候自动弹出的复制黏贴选择框呢? 查找了下网上的资料,测试了下,以下方法应该是可以得: 方法一.使CustomSelectionActionModeCallback无效 textField.setCustomSelectionActionModeCallback(new ActionMode.Callback() { public boolean onCreateActionMode(ActionMode actionMode, Menu menu) { retur

ios 复制黏贴板的使用

在iOS中,可以使用剪贴板实现应用程序之中以及应用程序之间实现数据的共享.比如你可以从iPhone QQ复制一个url,然后粘贴到safari浏览器中查看这个链接的内容. 一.在iOS中下面三个控件,自身就有复制-粘贴的功能: 1.UITextView2.UITextField3.UIWebView 二.UIKit framework提供了几个类和协议方便我们在自己的应用程序中实现剪贴板的功能. 1.UIPasteboard:我们可以向其中写入数据,也可以读取数据 2.UIMenuControl

js复制黏贴

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>ZeroClipboard demo实例</title> <script src="http://web.2144.cn/static/core/jquery.min.js"></script>         <script src=&quo

20150619禁止用户复制黏贴

user:<input id='user' type="text"> js======== var user=document.getElementById('user'); user.oncopy=user.onpaste=function () { return false; }

复制黏贴上传excel文件到网站

假如有一个excel文件,想把里面的内容传到网站上去. 可以利用JSON.stringify() 把空格和换行等字符转换为 escape sequence.如: 这就转换成了escape sequnence 但这个方法目前只支持到 IE8 Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari Basic support (Yes) 3.5 (1.9.1) 8.0 10.5 4.0

sublime 复制黏贴等快捷键修改

在 keyboard-binding user 里 增加个人配置来覆盖默认配置 [ { "keys": ["ctrl+z"], "command": "undo" }, { "keys": ["ctrl+shift+z"], "command": "redo" }, { "keys": ["ctrl+y"],