迷惑行为
查看原帖
迷惑行为
138357
Richard21477楼主2020/9/26 21:55
#include<bits/stdc++.h>
using namespace std;
long double min(long double a,long double b){
	return(a<=b)?a:b;
}
long double max(long double a,long double b){
	return (a<=b)?b:a;
}
/*
(x,y)->(x+y,x-y)
manhatun->qebi
(x+y)/2,(x-y)/2->(x,y)
*/
bool cp1(pair<double,double> a,pair<double,double> b){
	return a.first<b.first;
}
bool cp2(pair<double,double> a,pair<double,double> b){
	return a.second<b.second;
}
int main(){
	/*int n;
	cin>>n;
	int ins[n][2];
	for (int i=0;i<n;i++){
		scanf("%d%d",&ins[i][0],&ins[i][1]);
	}
	long long int mm=1e15;
	for (int i=0;i<n;i++){
		long long int add=0;
		for (int j=0;j<n;j++){
			int dx=abs(ins[i][0]-ins[j][0]);
			int dy=abs(ins[i][1]-ins[j][1]);
			add+=max(dx,dy);
		}
		mm=min(mm,add);
	}
	cout<<mm<<endl;*/
	int n;
	cin>>n;
	pair<double,double> ins[n+1];
	for (int i=1;i<=n;i++){
		double a,b;
		scanf("%lf%lf",&a,&b);
		ins[i].first=(a+b)/2;
		ins[i].second=(a-b)/2;
	}
	//->manhaton
	//sum=i*xi-sig(1,i)+sig(i,n)-(n-i+1)*xi;
	map<pair<double,double>,long double>xans;//k->ans
	long double ad[n+1];
	sort(ins+1,ins+n+1,cp1);
	ad[0]=0;
	for (int i=1;i<=n;i++){
		ad[i]=ad[i-1]+ins[i].first;
	}
	for (int i=1;i<=n;i++){
		xans[ins[i]]=ad[n]-2*ad[i]+(2*i-n)*ins[i].first;
	}
	sort(ins+1,ins+n+1,cp2);
	ad[0]=0;
	for (int i=1;i<=n;i++){
		ad[i]=ad[i-1]+ins[i].second;
	}
	for (int i=1;i<=n;i++){
		xans[ins[i]]+=ad[n]-2*ad[i]+(2*i-n)*ins[i].second;
	}
	long double ans=1e16;
	for (map<pair<double,double>,long double>::iterator it=xans.begin();it!=xans.end();it++){
		ans=min(ans,it->second);
	}
	long long int out=ans; 
	cout<<out<<endl;
	return 0;
}

如上的代码,一番乱搞终于对了; 然而没有加化整型的out就会全wa 用的cout啊

2020/9/26 21:55
加载中...