zoukankan      html  css  js  c++  java
  • 【JZOJ 4294】 复制&粘贴2

    题目大意:

    给定一个字符串,进行几个操作:将字符串中的 (a)(b) 的字符复制到其 (c) 的位置。求出最终字符串长度为 (k) 的前缀。

    正文:

    思路:

    可以定义 (k) 个指针指向字符串的前 (k) 位。但是直接暴力肯定时超,所以我们可以通过移动指针位置来确定最终字符串。

    举例:

    拿样例举例。

    2 18
    copypaste
    4
    3 6 8
    1 5 2
    4 12 1
    17 18 0
    

    (k) 个指针分别指向 (1,2)
    第一步操作,前 (k) 个指针分别指向 (1,2)
    可以发现 (c) 在某指针之后的话,指针无需操作。
    第三步操作,前 (k) 个指针分别指向 (1,4)
    第四步操作,前 (k) 个指针分别指向 (6,1)
    可以发现如果指针小于 (c+b-a),那么指针就要指向自己减去 (c-a) 的值,否则指向自己减去 (b-a) 的值。

    代码:

    
    int main()
    {
    	scanf("%d%d", &k, &m);
    	scanf ("%s", str);
    	scanf ("%d", &n);
    	for (int i = 1; i <= n; i++)
    		scanf("%d%d%d", &a[i], &b[i], &c[i]);
    	for (int i = 1; i <= k; i++) pos[i] = i;
    	for (int i = n; i >= 1; i--)
    	{
    		for (int j = 1; j <= k; j++)
    		{
    			if(pos[j] <= c[i]) continue;
    			if(pos[j] <= c[i] + b[i] - a[i])
    				pos[j] -= c[i] - a[i];
    			else
    				pos[j] -= b[i] - a[i];
    		}
    	}
    	for (int i = 1; i <= k; i++) printf("%c", str[pos[i] - 1]);
        return 0;
    }
    
  • 相关阅读:
    安装高版本的docker
    Apache JMeter汉化手册
    安装python包
    Jmeter Cluster
    doc下设置永久环境变量的好方法
    jmeter非常好的博客收藏
    mysql-学习链接
    python 脚本
    常见python快捷键
    2015年心情随笔--周围太烦躁,我想静静
  • 原文地址:https://www.cnblogs.com/GJY-JURUO/p/13466262.html
Copyright © 2011-2022 走看看