news 2026/4/24 4:02:27

P1188 PASTE【洛谷算法习题】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
P1188 PASTE【洛谷算法习题】

P1188 PASTE

网页链接

P1188 PASTE

题目描述

我们用文本处理器来处理一个特殊的文本文件,该文本文件共有N NN行文本,每一行文本仅包含一个自然数,第一行为1 11、第二行为2 22,以此类推至N NN行为自然数N NN

假设对该文本文件执行一次“剪切和粘贴”操作含义如下:首先选定连续的若干行文本,“剪切”操作将选定的文本从文件中剪下,而“粘贴”操作将剪切下来的文本插入到文件中的其他地方。

编写一个程序求出在进行了连续若干次“剪切和粘贴”操作后,文本文件中前十行的内容。

输入格式

第一行包含两个用空格隔开的自然数N NNK KKN NN表示文件的总行数( 10 ≤ N ≤ 100 , 000 ) (10≤N≤100,000)(10N100,000)K KK表示“剪切和粘贴”的总次数( 1 ≤ k ≤ 1000 ) (1≤k≤1000)(1k1000)

下面K KK行每一行包含一次“剪切和粘贴”操作的执行信息,每行包含三个用空格隔开自然数A , B , C A,B,CA,B,C,其中1 ≤ A ≤ B ≤ N , 0 ≤ C ≤ N − ( B − A + 1 ) 1≤A≤B≤N,0≤C≤N-(B-A+1)1ABN,0CN(BA+1)A AAB BB表示选定文本的第一行和最后一行,C CC表示被剪切下来的文本待插入处的前一行,如果C CC等于0 00则被剪切下来的的文本将被插入到文件的开头。

输出格式

由十行组成,其中包含所有的操作都完成后的文本文件中前十行所包含的数字。

输入输出样例 #1

输入 #1

13 3 6 12 1 2 9 0 10 13 8

输出 #1

6 7 8 9 10 11 12 2 3 4

解题思路

本题核心是暴力模拟剪切粘贴操作,处理文本行的移动问题。初始数组直接存储1~N代表文本行,利用操作次数K≤1000远小于数据规模N≤1e5的特点,暴力模拟即可高效求解。每次操作先提取[A,B]区间的文本行暂存,根据插入位置C调整数组:插入点在原区间左侧则右移元素,在右侧则左移元素,最后将暂存的文本行回填到目标位置。所有操作完成后,直接输出数组前10个元素,即为最终答案,算法简洁且完全适配题目约束。

总结

核心逻辑:模拟剪切-暂存-移动-回填的流程,完成文本行的剪切粘贴操作。
关键操作:提取剪切区间、数组元素移位、回填暂存数据,最终输出前十行。
效率保障:操作次数仅1000次,暴力模拟无性能压力,适配大数据规模。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vvt;typedefpair<ll,ll>pll;constll N=1e3+10;constll p=1e9+7;constll INF=1e18;constll M=1e6+10;constintL=100005;intn,k;intd[L],tmp[L];intc;intmain(){for(inti=1;i<L;i++)d[i]=i;cin>>n>>k;for(intop=0;op<k;op++){ints,t,ins,l,a,b;cin>>s>>t>>ins;l=t-s+1;a=ins+1;b=a+l-1;c=0;for(inti=s;i<=t;i++)tmp[++c]=d[i];if(ins<s)for(inti=s-1;i>=a;i--)d[i+l]=d[i];elsefor(inti=t+1;i<=b;i++)d[i-l]=d[i];for(inti=b;i>=a;i--)d[i]=tmp[c--];}for(inti=1;i<=10;i++)cout<<d[i]<<endl;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 4:02:22

Post-RFC完整指南:10个步骤实现高效的博文预览

Post-RFC完整指南&#xff1a;10个步骤实现高效的博文预览 【免费下载链接】post-rfc Blog post previews in need of peer review 项目地址: https://gitcode.com/gh_mirrors/po/post-rfc Post-RFC是一个专注于博文预览同行评审的开源项目&#xff0c;旨在帮助内容创作…

作者头像 李华
网站建设 2026/4/24 3:55:47

彻底解决fmtlib/fmt中back_inserter调用难题:从原理到实战修复

彻底解决fmtlib/fmt中back_inserter调用难题&#xff1a;从原理到实战修复 【免费下载链接】fmt A modern formatting library 项目地址: https://gitcode.com/GitHub_Trending/fm/fmt fmtlib/fmt作为一款现代格式化库&#xff0c;以其高效、安全的特性被广泛应用于C项目…

作者头像 李华
网站建设 2026/4/24 3:54:18

ERPNext自动化安装终极指南:5分钟搭建企业管理系统

ERPNext自动化安装终极指南&#xff1a;5分钟搭建企业管理系统 【免费下载链接】erpnext_quick_install Unattended install script for ERPNext Versions, 13, 14 and 15 项目地址: https://gitcode.com/gh_mirrors/er/erpnext_quick_install 想要在5分钟内快速部署功能…

作者头像 李华
网站建设 2026/4/24 3:52:44

突破性能瓶颈:etcd数据索引优化实战指南

突破性能瓶颈&#xff1a;etcd数据索引优化实战指南 【免费下载链接】etcd Distributed reliable key-value store for the most critical data of a distributed system 项目地址: https://gitcode.com/GitHub_Trending/et/etcd etcd是一个分布式可靠的键值存储系统&am…

作者头像 李华
网站建设 2026/4/24 3:52:42

别再手动算身份证最后一位了!用Python 3.10快速实现MOD11-2校验码生成

用Python 3.10实现身份证校验码自动化生成&#xff1a;从算法原理到工程实践 身份证号码的最后一位校验码是保障数据完整性的关键设计。每次手动计算不仅耗时费力&#xff0c;还容易出错。作为开发者&#xff0c;我们完全可以用Python将这个流程自动化&#xff0c;将精力集中在…

作者头像 李华