首页 > 其他分享 >[Codeforces] CF1627B Not Sitting

[Codeforces] CF1627B Not Sitting

时间:2023-12-02 19:34:12浏览次数:37  
标签:CF1627B 格子 Sitting int Codeforces times Tina leqslant Rahul

题意

Rahul 和 Tina 在玩一个游戏。游戏在一个 \(n\times m\) 的网格图上进行,记第 \(r\) 行第 \(c\) 列上的格子为 \((r,c)\)。定义 \((a,b)\) 与 \((c,d)\) 之间的距离为 \(\left|a-c\right|+\left|b-d\right|\)。

游戏开始后,Tina 会选择恰好 \(k\) 个格子,并将其涂成粉红色。

涂完以后,Rahul 会选择任意一个没有被涂成粉红色的格子并在那个格子上坐下。

此后,Tina 也会选择任意一个格子(包括被涂成粉红色和没有被涂成粉红色的格子)并在那个格子上坐下。

Rahul 希望他和 Tina 之间的距离尽可能近,而 Tina 希望她和 Rahul 之间的距离尽可能远。

于是,对于所有的 \(k\in[0,n\times m-1]\cap\N^*\),Rahul 都想知道他和 Tina 之间的距离是多少。

数据范围:

  • \(t\) 组数据,\(1\leqslant t\leqslant 5\times 10^4\)。
  • \(2\leqslant n\times m,\sum(n\times m)\leqslant 10^5\)。

思路

用excel啥的列个表格打个草稿就可以发现,不管Ruhul选在哪里,Tina的位置一定是在四个角中的一个

所以,只需要枚举\((x,y)\),然后计算出其和四个角的最大值即可

因为随着变粉的格子越来越多,所以Ruhul离Tina的距离也一定越来越远,所以最后将每个格子的答案排序输出即可

代码

#include<bits/stdc++.h>
using namespace std;
int len(int a,int b,int c,int d)
{
	return abs(a-c)+abs(b-d);
}
void run()
{
	int n,m,x,y,cnt1,cnt2;
	vector<int>ans;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			int maxn=-1e9;
			maxn=max(maxn,len(i,j,1,1));
			maxn=max(maxn,len(i,j,1,m));
			maxn=max(maxn,len(i,j,n,1));
			maxn=max(maxn,len(i,j,n,m));
			ans.push_back(maxn);
//			cout<<maxn<<" ";
		}
//		cout<<"\n";
	}
	sort(ans.begin(),ans.end());
	for(int i=0;i<ans.size();i++) cout<<ans[i]<<" ";
	cout<<endl;
}
int main()
{
	int t;
	cin>>t;
	while(t--) run();
} 

标签:CF1627B,格子,Sitting,int,Codeforces,times,Tina,leqslant,Rahul
From: https://www.cnblogs.com/lyk2010/p/17872097.html

相关文章

  • [Codeforces] CF1659B Bit Flipping
    题面给定一个长为\(n\)的01串,你可以进行\(k\)次操作。每次操作中,你可以选择任意一位,并将除了这一位以外的其它位翻转(\(1\)变\(0\),\(0\)变\(1\)),输出\(k\)次操作后能获得的字典序最大的字符串,并输出每一位在操作中被选择的次数。若有多解输出任意一解。思路可以发现......
  • [Codeforces] CF1675D Vertical Paths
    题目描述给定一棵由\(n\)个顶点组成的有根树。顶点由\(1\)到\(n\)编号。任何顶点都可以是树的根。请在树上找出这样一组路径:每个顶点恰好属于一条路径,每条路径可以包含一个或多个顶点;在每条路径中,每个节点的下一个节点是当前节点的子节点(即路径总是向下——从父节点......
  • Codeforces Round 912 (Div. 2) E - Geo Game
    考虑什么时候会改变答案的奇偶,显然可以根据\(x\oplusy\)的奇偶性分组,在组内进行跳跃不会改变,只有当组间跳跃的时候才会改变。打表观察先手什么时候必胜,其中:\(u\)是当前获胜目标为奇/偶(1/0),\(v\)是位于哪一组,\(a,b\)代表两组还剩多少,\(st\)代表当前答案的奇偶性。intdfs(intu,......
  • 【ErikTse】2023-Codeforces新手训练营 第六期题解
    A.Wrath题目大意给你一个\(L\)数组和\(n\)个人,第\(i\)个人可以使用威力为\(L_i\)的闪电旋风劈击杀前面\(L_i\)人,问你最后能存活多少人?思路差分。开一个数组来标记当前威力的闪电旋风劈能击杀到的最远的人和使用技能的人,最远击杀的人所在的位置+1,自己的位置-1,这样算前缀和时所......
  • Codeforces Round 912 (Div. 2)
    CodeforcesRound912(Div.2)基本概述最难受的一集。A题秒了。B题幸苦推了两个小时,最后也通过了pretest了,结果赛后被HACK。C题知道是DP,但觉得不好推状态转移方程,所以全心全意去做B题了。爆掉\(150\)分B.StORageroom我的思路其实就几乎是答案。之前几乎没怎......
  • [Codeforces] CF1591C Minimize Distance
    CF1591CMinimizeDistance题目一条线上有\(n\)(\(1\len\le2\cdot10^5\))个仓库,第\(i\)个仓库的位置是\(x_i\)(\(1\lei\len\))。你有\(n\)箱货物,要分别运到这\(n\)个仓库里。你的初始位置在点\(0\),一次可以携带\(k\)(\(1\lek\len\))箱货物。在送完携带......
  • [Codeforces] CF1603A Di-visible Confusion
    CF1603ADi-visibleConfusion题目给一个长度为\(n\)的序列\(a_1,a_2,\dots,a_n\),对于每个位置\(i\),如果\(a_i\%\left(i+1\right)\not=0\),就可以将\(a_i\)删掉。删掉之后,后面的数都会往前面移动一位。问能否将序列删成空。数据范围\(1\let\le10^4,1\len\le10^5,1\le......
  • Codeforces Round 883 (Div. 3)
    CodeforcesRound883(Div.3)A.RudolphandCuttheRope题意:有一颗糖果在连在绳子上,求剪短多少根绳子,他能落地思路:只要绳子长度比钉子高度大就不用减#include<bits/stdc++.h>usingnamespacestd;voidsolve(){intn,res=0;cin>>n;while(n--)......
  • Codeforces Round 911 (Div. 2)
    CodeforcesRound911(Div.2)基本情况A题秒了。B题条件没想明白,也不造点数据就无脑交,导致罚了不少时。B.LauraandOperations我先推出了,对于一个数,当另外两个数的个数之和为偶数时解可行,且这个数本身要能跟后面数替换。比如11223333就可以操作122333(1......
  • Codeforces Round 910 (Div. 2)
    https://codeforces.com/contest/1898C题可以造一个大小为4的环,然后再造一个来回,这样就解决了%4=0,%4=2的情况,而奇数的情况显然无解。#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<map>#include<vector>#include<set>#includ......