首页 > 其他分享 >AtCoder Beginner Contest 351 E - Jump Distance Sum 切比雪夫距离与曼哈顿距离的转化

AtCoder Beginner Contest 351 E - Jump Distance Sum 切比雪夫距离与曼哈顿距离的转化

时间:2024-04-28 15:23:24浏览次数:26  
标签:AtCoder cnt Beginner 曼哈顿 比雪夫 距离 转化 int

先说知识点。

曼哈顿距离:

横纵坐标距离差的绝对值的,即|X1-X2|+|Y1-Y2|,

离(0,0)点 曼哈顿距离为1的点形成的是一个 旋转45度后的正方形

切比雪夫距离:

横纵坐标距离差的绝对值的最大值,即max(|X1-X2|,|Y1-Y2|),

离(0,0)点 切比雪夫距离为1的点形成的是一个 不旋转的正方形

曼哈顿距离转切比雪夫距离

把(x,y)转化成(x+y,x-y),转化前两点曼哈顿距离 等于 转化后两点切比雪夫距离

切比雪夫距离转曼哈顿距离

把(x,y)转化成\((\frac{x+y}{2},\frac{x-y}{2})\),转化前两点切比雪夫距离 等于 转化后两点曼哈顿距离

所以转化后这个题就好做很多啦

#include<bits/stdc++.h>
#define int long long
#define DB double
using namespace std;
int T,n,cnt,ans;
const int N=200010;
int X[N],Y[N],nowx[N],nowy[N];
void work()
{
	sort(nowx+1,nowx+1+cnt);sort(nowy+1,nowy+1+cnt);
	for(int i=1,sum=0;i<=cnt;++i)ans+=nowx[i]*(i-1)-sum,sum+=nowx[i];
	for(int i=1,sum=0;i<=cnt;++i)ans+=nowy[i]*(i-1)-sum,sum+=nowy[i];
}
signed main()
{
	cin>>n;
	for(int i=1;i<=n;++i)scanf("%lld%lld",&X[i],&Y[i]);
	cnt=0;
	for(int i=1;i<=n;++i)
		if((X[i]+Y[i])&1)nowx[++cnt]=X[i]+Y[i],nowy[cnt]=X[i]-Y[i];
	work();
	
	cnt=0;
	for(int i=1;i<=n;++i)
		if(!((X[i]+Y[i])&1))nowx[++cnt]=X[i]+Y[i],nowy[cnt]=X[i]-Y[i];
	work();
	
	cout<<ans/2;
	return 0;
}
/*
3
0 0
1 3
5 6



*/

标签:AtCoder,cnt,Beginner,曼哈顿,比雪夫,距离,转化,int
From: https://www.cnblogs.com/wljss/p/18163510

相关文章

  • atcoder集
    AtCoderBeginnerContest351A-Thebottomoftheninth(签到题) Code:#include<bits/stdc++.h>usingnamespacestd;#definedebug(x)cerr<<#x<<":"<<x<<'\n';intmain(){ios::sync_w......
  • [atcoder 349] [F - Subsequence LCM]
    SOSDP学习笔记Linkhere:代码:importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.math.BigInteger;importjava.util.*;publicclassMain{staticintn;staticlongm;staticlong[]a;......
  • 洛谷题单指南-动态规划2-P2758 编辑距离
    原题链接:https://www.luogu.com.cn/problem/P2758题意解读:对a字符串最少操作几次可以变成b字符串,看似无从下手,可以从内部递推关系着手。解题思路:设dp[i][j]表示将a字符串1~i变成b字符串1~j的最少操作次数,字符串下标从1开始。如何思考递推?可以从最后一步为切入点!最后一步对a[i]......
  • lora技术实现远距离通信的原因有哪些?
    LoRa技术传播距离远的原因主要可以归结为以下几点:首先,LoRa技术采用了扩频通信的原理。扩频通信是一种通过扩展信号带宽来降低单个符号的信号发送功率,从而提高信号抗干扰能力和增加信号传输距离的技术。在扩频通信中,原始信息数据的频谱被展宽,然后再进行传输。这一技术在LoRa中得到......
  • 戴森球计划:关于打帆星距离与建筑效率的精确计算
    来源贴吧:作者:wolray日期:2024-03-05结论放开头:由于俯仰角限制,打帆建筑效率(可打帆建筑面积与球面占比)的极限最大值为35.9%,星球轨道越远,太阳帆轨道半径越大,越接近该值,但变化微乎其微。最佳打帆策略:离恒星最近的潮汐锁定星,打最小轨道的帆。该结论与小马哥的文章网页链接完全一致。......
  • AtCoder Beginner Contest 350 A - G 题解
    AtCoderBeginnerContest350A-PastABCsSolution把最后三个字符转成数字判断即可Code#include<bits/stdc++.h>usingnamespacestd;intmain(){strings;cin>>s;s=s.substr(3,3);intx=0;x=(s[0]-'0')*100+(s[1]-�......
  • 72. 编辑距离(leetcode)
    https://leetcode.cn/problems/edit-distance/description/?envType=study-plan-v2&envId=top-100-liked这是一个难题,关于序列DP的,官方的题解较为难懂,这里有一位前辈解释的很好这里的状态定义是:dp[i][j]表示word1的前i个字母,转换成word2的前j个字母的最小步数classS......
  • atcoder regular 176 (ARC176) A、B题解
     A很容易有一个错误想法,就是行从1~n,列从1~n拿,这样,第三个样例,最后,第7行,第7列,需要都增加两个数,但是(7,7)这个位置只能有一个数。我的做法是优先队列/set队列,每次选择行、列之中当前已经有的数目最少的(这样它们最需要添加),这样能保证,行列需要添加的,不会出现只能选择多个行列一样的......
  • QT beginner QFileDialog
    QFileQTextStreamQMessageBoxQFileDialog应用示例mainwindow.cpp#include"mainwindow.h"#include"ui_mainwindow.h"#include<QFile>#include<QTextStream>#include<QMessageBox>#include<QFileDialog>MainWindow::MainWi......
  • AtCoder Beginner Contest 350 G - Mediator
    链接:https://atcoder.jp/contests/abc350/tasks/abc350_g大致题意:给出n个点,q个询问1号询问要求u,v之前加一条无向边图始终是一个森林2号询问询问是否有一个点与u,v都相邻,若有则输出该点,若无则输出0。询问强制在线。思路:在题目要求的图中,满足2号询问的点只有三种情况:要么这个......