当前位置: 首页 > news >正文

P1289 磁盘碎片整理【洛谷算法习题】

P1289 磁盘碎片整理

网页链接

P1289 磁盘碎片整理

题目描述

出于最高安全性考虑,司令部采用了特殊的安全操作系统,该系统采用一个特殊的文件系统。在这个文件系统中所有磁盘空间都被分成了相同尺寸的N NN块,用整数1 11N NN标识。每个文件占用磁盘上任意区域的一块或多块存储区,未被文件占用的存储块被认为是可是用的。如果文件存储在磁盘上自然连续的存储块中,则能被以最快的速度读出。

因为磁盘是匀速转动的,所以存取上面不同的存储块需要的时间也不同。读取磁盘开头处的存储块比读取磁盘尾处的存储块快。根据以上现象,我们事先将文件按其存取频率的大小用整数1 11K KK标识。按文件在磁盘上的最佳存储方法,1 11号文件将占用1 , 2 , ⋯ , S 1 1,2,\cdots,S_11,2,,S1的存储块,2 22号文件将占用S 1 + 1 , S 1 + 2 , ⋯ , S 1 + S 2 S_1+1,S_1+2,\cdots, S_1+S_2S1+1,S1+2,,S1+S2的存储块,以此类推(S i S_iSi是被第i ii个文件占用的存储块的个数)。为了将文件以最佳形式存储在磁盘上,需要执行存储块移动操作。一个存储块移动操作包括从磁盘上读取一个被占用的存储块至内存并将它写入其他空的存储块,然后宣称前一个存储块被释放,后一个存储块被占用。

本程序的目的是通过执行最少次数的存储块移动操作,将文件按最佳方式存储到磁盘上,注意同一个文件的存储块在移动之后其相对次序不可改变。

输入格式

每个磁盘说明的第一行包含两个用空格隔开的整数N NNK ( 1 ≤ K ≤ N ≤ 10 5 ) K(1 \le K \le N \le 10^5)K(1KN105),接下来的K KK行每行说明一个文件,对第i ii个文件的说明是这样的:首先以整数S i S_iSi开头,表示第i ii个文件的存储块数量,1 ≤ S i ≤ N − K 1 \le S_i \le N-K1SiNK,然后跟S i S_iSi个整数,每个整数之间用空格隔开,表示该文件按自然顺序在磁盘上占用的存储块的标识。所有这些数都介于1 11N NN之间,包括1 11N NN。一个磁盘说明中所有存储块的标识都是不同的,并且该盘至少有一个空的存储块。

输出格式

对于每一个磁盘说明,只需输出一行句子“ We need M move operations. ” \text{``\texttt{We need \textrm{\textit{M}} move operations.}''}We needMmove operations.M MM表示将文件按最佳方式存储到磁盘上所需进行的最少存储块移动操作次数。如果文件已按最佳方式存储,仅需输出“ No optimization needed. ” \text{``\texttt{No optimization needed.}''}No optimization needed.

输入输出样例 #1

输入 #1

20 3 4 2 3 11 12 1 7 3 18 5 10

输出 #1

We need 9 move operations.

解题思路

本题核心是置换环统计,将磁盘整理问题转化为经典的置换环求解最小移动次数。首先计算所有文件占用的总块数pos,文件的最佳存储位置为1~pos,即第i个位置的目标存储块为i。遍历所有存储块,已在目标位置(a[i]=i)的块无需移动;剩余未归位的块会形成若干置换环,每个环内的所有块都需要移动调整,所有环的长度之和即为最小移动总次数。若移动次数为0,输出无需优化,否则输出移动次数。算法时间复杂度O ( N ) O(N)O(N),高效适配N ≤ 10 5 N \le 10^5N105的数据范围。

总结

核心逻辑:磁盘块归位问题等价于置换环问题,正确归位的块无需移动,总移动次数为置换环长度之和。
关键操作:计算总占用块数、标记已归位块、遍历统计置换环长度。
效率保障:线性遍历处理数据,无冗余计算,完美满足题目大数据约束。

代码内容

#include<bits/stdc++.h>usingnamespacestd;#defineendl'\n'typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vvt;typedefpair<ll,ll>pll;constll N=1e5+5;constll INF=1e18;constll M=1e6+10;constll mod=1e9+7;ll n,k,s,a[N],pos,ans,vis[N];llfind(ll x){if(!x||vis[x])returnx;vis[x]=1;ans++;returnfind(a[x]);}intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>n>>k;for(ll i=1;i<=k;i++){cin>>s;for(ll j=1;j<=s;j++){cin>>a[++pos];if(a[pos]==pos)vis[pos]=1;}}for(ll i=1;i<=pos;i++){if(vis[i])continue;ll last=find(a[i]);if(last==a[i])ans++;}if(ans)cout<<"We need "<<ans<<" move operations."<<endl;elsecout<<"No optimization needed."<<endl;return0;}
http://www.jsqmd.com/news/861113/

相关文章:

  • AI与云计算融合的考点中,机器学习基础流程、大模型应用基础及Prompt Engineering在系统设计中的作用是三大核心模块
  • 2026年国内核心五金类展览会TOP5客观排行:义乌3月份展会/义乌7月展会信息/义乌博览会2026年展会时间/选择指南 - 优质品牌商家
  • 团队冲刺阶段6(团队)
  • 【Midjourney单色调风格终极指南】:20年AI视觉设计专家亲授3大调色公式、7类灰阶映射逻辑与避坑清单
  • 2026浙江会议室音响选型指南:杭州舞台灯光设计、杭州舞台音响设计、杭州舞台音箱、杭州音响工程、杭州音响系统、杭州音响设备选择指南 - 优质品牌商家
  • 2026生物有机肥高温好氧发酵罐专业厂家排行:新能源秸秆地膜处理设备哪家好、新能源秸秆地膜处理设备售后服务方案选择指南 - 优质品牌商家
  • 2026年5月北京十大装修公司排行榜推荐:十家评测工地巡检避偷工减料案例 - 品牌推荐
  • 2026年5月,如何精准选择东莞地区可靠的UL热缩管供货商 - 2026年企业推荐榜
  • ElevenLabs顶级声库实战测评(含Wavenet级MOS评分+情感连贯性压测数据):这3个未公开API声线正在被头部AIGC团队悄悄部署
  • “--tile”失效了?深度逆向Midjourney纹理无缝拼接底层逻辑(含Python自动化Tile校验脚本)
  • 《科技代替了我工作》的传播入口:技术焦虑如何落到听众
  • 芬兰语语音合成落地难题全解析,从API限流、重音标记缺失到Sami语系兼容性解决方案
  • 2026年5月天津国际高中推荐:五家专业评测夜自习防眼疲劳 - 品牌推荐
  • 央国企就业规划培训怎么选?2026年4月实用指南,国企求职辅导/国企笔试面试培训/央企上岸培训,央国企培训机构推荐 - 品牌推荐师
  • 2025-2026年大树智汇科技电话查询:使用AI优化服务前需核实资质与风险 - 品牌推荐
  • 2026年合肥法务合规顾问服务机构排行与实力盘点:合肥法律咨询顾问、合肥法律维权顾问、合肥法律解决方案顾问、合肥法律顾问选择指南 - 优质品牌商家
  • 在NVIDIA DGX-Spark上部署NeMo框架实现微调与TensorRT Bit量化的全流程指南
  • 2025-2026年航城壹号电话查询:现房选购需关注资质与合同细节 - 品牌推荐
  • 2025-2026年上海吉日搬场有限公司电话查询:预约前请核实服务范围与收费标准 - 品牌推荐
  • 2026年成都本地打印机租赁公司实力排行盘点:佳能复印机租售服务商/成都办公设备电脑租赁供应商推荐/成都彩色打印机出租/选择指南 - 优质品牌商家
  • 2025-2026年国际物流公司排行榜推荐:十大口碑产品评测铁路运输防货损场景价格 - 品牌推荐
  • 2025-2026年国内北京装修设计公司推荐:五家办公室装修避免工期延误的产品口碑好的评测 - 品牌推荐
  • Java程序设计(第3版)第四章——类的组成
  • 基于地铁客流数据的智能问答系统:结合大模型与SGLang推理加速
  • 淘宝淘金币自动化脚本:一键解放双手,每天节省25分钟
  • 2026年Q2四川悬挑梯厂家技术实力实测对比解析:四川悬浮型楼梯、四川折叠楼梯、四川旋转楼梯、四川楼梯栏杆、四川玻璃楼梯选择指南 - 优质品牌商家
  • 2025-2026年广州除甲醛公司推荐:五大口碑产品评测全屋净化特点市场份额 - 品牌推荐
  • 开源 AI Agent Harness Engineering 模型与闭源模型的对比
  • 2025-2026年国际十大物流公司排行榜推荐:专业评测海运空运防延误特点市场份额 - 品牌推荐
  • incus抄作业