[NOIP模拟]农夫约的假期

题目

题目背景

在某国有一个叫农夫约的人,他养了很多羊,其中有两头名叫mm和hh,他们的歌声十分好听,被当地人称为“魔音”······

农夫约也有自己的假期呀!他要去海边度假,然而mm和hh不能离开他。没办法,他只好把他们两个带上。

到了海边,农夫约把他的羊放在一个(nn)的矩阵(有nn个方格)里。mm和hh十分好动,他们要走到m(m<=n*n)个地方,第i个地方的坐标为(xi,yi),每到一个地方他们会高歌一曲,制造q[i]点魔音值,因为他们的魔音十分独特,他们的声音只能横着或竖着传播。每传播一格,魔音值会增加1。(传播的格子数取最小的)接下来农夫约要住酒店。为了方便照顾小羊们,他选的酒店的坐标要在矩阵内。但小羊们的魔音让他十分头疼。他想求出魔音值最小的地方。

他还要享受他的假期,所以他把这个任务交给你了,加油(_)。

输入描述

第一行输入n、m和z。

接下来m行,每行3个正整数x[i],y[i]和q[i]。

输出描述

​ 第一行一个整数表示魔音值最小是多少。

接下来一行两个正整数zb1和zb2,表示魔音值最小的地方的坐标(如果有多个答案,输出横坐标最小的情况下,纵坐标最小的)。

样例

样例输入

3 3 1
1 1 1
1 2 1
1 3 1

样例输出

5
1 2

题解

曼哈顿距离,他的横坐标和纵坐标距离是分开的,所以我们可以对横坐标和纵坐标分开看,分别取两个的中位数作为酒店的坐标.

代码

#include<bits/stdc++.h>
using namespace std;
namespace IO{
	#define rep(i,l,r) for(int i=l,i##_end_=r;i<=i##_end_;++i)
	#define fep(i,l,r) for(int i=l,i##_end_=r;i>=i##_end_;--i)
	#define fi first
	#define se second
	#define Endl putchar('\n')
	typedef long long ll;
	typedef pair<int,int> pii;
	template<class T>inline T Max(const T x,const T y){return x<y?y:x;}
	template<class T>inline T Min(const T x,const T y){return x<y?x:y;}
	template<class T>inline T fab(const T x){return x<0?-x:x;}
	template<class T>inline void getMax(T& x,const T y){x=Max(x,y);}
	template<class T>inline void getMin(T& x,const T y){x=Min(x,y);}
	template<class T>T gcd(const T x,const T y){return y?gcd(y,x%y):x;}
	template<class T>inline T readin(T x){
		x=0;int f=0;char c;
		while((c=getchar())<'0' || '9'<c)if(c=='-')f=1;
		for(x=(c^48);'0'<=(c=getchar()) && c<='9';x=(x<<1)+(x<<3)+(c^48));
		return f?-x:x;
	}
}
using namespace IO;

const int maxn=100000;
const int maxm=100000;

int x[maxm+5],y[maxm+5],n,m;

ll ans;

inline void Init(){
	n=readin(1),m=readin(1);readin(1);
	rep(i,1,m){
		x[i]=readin(1),y[i]=readin(1);
		ans+=readin(1);
	}
}

signed main(){
	// freopen("shuru.in","r",stdin);
	// freopen("shuru.out","w",stdout);
	Init();
	sort(x+1,x+m+1);sort(y+1,y+m+1);
	int mid=(m+1)>>1;
	int px=x[mid],py=y[mid];
	rep(i,1,m)ans+=fab(px-x[i])+fab(py-y[i]);
	printf("%lld\n%d %d\n",ans,px,py);
	return 0;
}
posted @ 2020-11-28 15:53  Arextre  阅读(131)  评论(0编辑  收藏  举报