首页 > 其他分享 >P9585 酒店题解

P9585 酒店题解

时间:2023-08-27 22:34:19浏览次数:47  
标签:酒店 P9585 int 题解 房间 值加 两边 愤怒 客人

分析:

贪心算法。

有 \(n\) 个客人。对于每一位客人,我们都要遍历一遍所有房间,找出最优入住房间编号。

设当前遍历的房间编号为 \(j\)。

分三种情况:

  1. 左右两边的房间皆空,则为最优房间。
  2. 左右两边只有一个房间有客人,则愤怒值加 \(2\)(因为有两个客人所以加 \(2\))。
  3. 左右两边都有人住,则为最坏情况,愤怒值加 \(4\) (中间的客人愤怒值加 \(2\),左右两边客人愤怒值加 \(1\))。

有 \(n\) 个客人,所以要进行 \(n\) 次循环。

代码:

#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;
}

标签:酒店,P9585,int,题解,房间,值加,两边,愤怒,客人
From: https://www.cnblogs.com/splay/p/17661008.html

相关文章

  • ABC317F题解
    让人头大的数位DP。建议评蓝。个人认为不适合放ABC的F。将三个数二进制拆分,使三个数异或为0相当于每个二进制位三个数中有0或2个是1。所以考虑数位DP,设\(dp[i][m1][m2][m3][lim1][lim2][lim3]\)为第\(i\)位,三个数模\(a\),\(b\),\(c\)分别是\(m1\),\(m2\),\(m3\)......
  • NOIP2013提高组初赛易错题解析
    7. 正解:可以画出递归树,画出后应该是这样子的 画出递归树,就可以得出答案时间复杂度为O(Fn) 15. 正解:2T(n/2)=O(logn)T(n)=2*T(n/2)+2*n=O(nlogn)三.2. 错误原因:蒙的正解:通过观察,可以找到递推关系式,f[n]=1/n*(n+f[1]+f[2]+...+f[n]),f[1]=0,f[2]=2,经过计算......
  • NOIP2017提高组初赛易错题解析
     8.由四个不同的点构成的简单无向连通图的个数是()A.32 B.35 C.38 D.41错误原因:数重了正解:分情况计算,6条边的有1种,5条边的有C(6,1)=6种,4条边的有C(6,4)=15种,3条边,要分度数,2+2+1+1的有12种,3+1+1+1的有4种,共38种 10.若 f0​=0,f1​=1,fn+1​=(fn​+fn−1)/2​​,则随着......
  • NOIP2016提高组初赛易错题解析
    9. 正解:每一个bit,都有两种可能,0和1,所以最多可以使用232=4GB的内存 14. 正解:使用代入法,T(n)=2T(n/4)+sqrt(n),T(n/16)=2T(n/4/4/4)+1/4*sqrt(n),T(n)=2k+k*sqrt(n)=sqrt(n)+k*sqrt(n),则时间复杂度为O(sqrt(n)logn) 二.1. 正解:前三个都是无线通信技术,以太网是有......
  • NOIP2018提高组初赛易错题解析
    2.下列属于解释执行的程序设计语言是()A.C B.C++ C.Pascal D.Python错误原因:忘记了正解:C、C++和Pascal都是编译性语言,而Python是解释性语言 5.设某算法的时间复杂度函数的递推方程是 T(n)=T(n-1)+n(n 为正整数)及 T(0)=1,则该算法的时间复杂度为()A.O(logn) ......
  • P7414 [USACO21FEB] Modern Art 3 G 题解
    思路考虑区间DP。设\(f_{i,j}\)表示要刷到\([i,j]\)这一段的目标需要的最小次数。对于\(f_{i,j}\),如果\(color_i\)与\(color_j\)相等,那么再子区间合并的时候就可以少刷一次,即\(f_{i,j}=\min\limits_{k=i}^{j-1}f_{i,k}+f_{k+1,j}-1\)。否则\(f......
  • CSP-J2022初赛易错题解析
    7.假设字母表{a,b,c,d,e}在字符串出现的频率分别为10%,15%,30%,16%,29%。若使用哈夫曼编码方式对字母进行不定长的二进制编码,字母d的编码长度()位。A.1  B.2 C.2或3  D.3正解:画出哈夫曼树即可9.考虑由N个顶点构成的有向连通图,采用邻接矩阵的数据结构表示时,该矩阵中至......
  • CSP-J2020初赛易错题解析
    一.5. 正解:冒泡排序最少比较n-1次,即单调上升序列 10.5 个小朋友并排站成一列,其中有两个小朋友是双胞胎,如果要求这两个双胞胎必须相邻,则有()种不同排列方法?A.24 B.36 C.72 D.48错误原因:忘记乘上A(2,2)了正解:捆绑法,A(4,4)*A(2,2)=48 15.有五副不同颜色的手套(......
  • CSP-J2021初赛易错题解析
    12.由 1,1,2,2,3 这五个数字组成不同的三位数有()种。A.18 B.15 C.12 D.24正解:枚举法,枚举即可,共18种 15.有四个人要从A点坐一条船过河到B点,船一开始在A点。该船一次最多可坐两个人。已知这四个人中每个人独自坐船的过河时间分别为 1,2,4,8,且两个人坐船的......
  • 【题解】 P7077 [CSP-S2020] 函数调用(拓扑排序)
    题意题目给定了一个长度为\(n\)序列\(a\)与\(m\)个操作,操作一共有3种:1.给定\(x,y\),使\(a_x\)增加\(y\)。2.给定\(x\),使\(a\)中所有数全部乘上\(x\)。3.给出k个数\(c_1,c_2,...,c_k\),表示这个操作的任务是按照先后顺序执行编号为\(c_1,c_2,...,c_k\)的\(k\)的操作。最后,题目相......