P9585 酒店题解
分析:
贪心算法。
有
设当前遍历的房间编号为
分三种情况:
- 左右两边的房间皆空,则为最优房间。
- 左右两边只有一个房间有客人,则愤怒值加
(因为有两个客人所以加 )。 - 左右两边都有人住,则为最坏情况,愤怒值加
(中间的客人愤怒值加 ,左右两边客人愤怒值加 )。
有
点击查看代码
#include<bits/stdc++.h> using namespace std; int n,m,sum,f[105]; int main(){ cin>>n>>m; for(int i=1;i<=n;i++) { int k=0x3f,I=0;//k为愤怒值,初始化,I为客人入住的房间编号 for(int j=1;j<=m;j++) { int fr=j-1,en=j+1; if(j==1) fr=m;//因为是环形,所以要特别处理一下 if(j==m) en=1; if(f[j]==0) {//如果当前房间没有人入住 int K=0; if(f[fr]==1) K+=2;//相邻的房间只有一个人入住 if(f[en]==1) K+=2;//相邻的房间有两个人入住 if(K<k) { k=K; I=j; } } } sum+=k; f[I]=1;//标记 } cout<<sum<<endl; return 0; }
本文作者:S__X
本文链接:https://www.cnblogs.com/splay/p/17661008.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步