CF1627B题解
Not Sitting
题面翻译
Rahul 和 Tina 在玩一个游戏。游戏在一个
游戏开始后,Tina 会选择恰好
数据范围:
组数据, 。 。
样例 #1
样例输入 #1
2
4 3
1 2
样例输出 #1
3 3 4 4 4 4 4 4 5 5 5 5
1 1
主要思路:模拟+贪心
Rahul 先选择位置,假设刚开始所有位置都未被涂色,那么 Rahul 一定会选择最靠近中间的某个位置;而 Tina 一定会选择四个墙角中离 Rahul 最远的一个位置。
对于每一个被涂色的格子,总是被涂色前 Rahul 的最佳选择,因为他们的选择都是明智的,也就是说我们可以将被涂色的格子作为 Rahul 的位置。
因为每个格子都会被涂色,所以每个格子都会作为 Rahul 的座位。
这样,问题就简化为了:求出每个位置距离四个角落的距离的最大值,然后将他们放到一个数组中,从小到大排序输出即可。
附源码:
#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
int res[N];
int n, m, cnt;
int main(){
int T;
cin>>T;
while(T--){
cnt=0;//多组不清空,提交两行泪
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){//教室是二维的,要双重循环
res[cnt++]=max(max(abs(1-i)+abs(1-j),abs(n-i)+abs(1-j)),max(abs(1-i)+abs(m-j),abs(n-i)+abs(m-j)));//求每个位置距离四个角落的距离的最大值
}
}
sort(res,res+cnt);//排序
for(int i=0;i<cnt;i++){
cout<<res[i]<<' ';//输出
}
cout<<endl;//多组数据换行
}
return 0;
}
本人(KK_SpongeBob)蒟蒻,写不出好文章,但转载请注明原文链接:https://www.cnblogs.com/OIer-QAQ/p/18575292
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期