poj3244 Difference between Triplets
2014-10-28 22:18
106 查看
题意:<=200000个三元组(xi,yi,zi) 。 定义D(I,J)=max{xi-xj,yi-yj,zi-zj}-min{xi-xj,yi-yj,zi-zj} 求任意两个三元组的差的和。 思路:数轴上max(a,b,c)-min(a,b,c)=(|a-b|+|b-c|+|c-a|)/2(显然:任两点距离之和除以2倍) 那么 d[i][j]=( |x[i]-x[j]| + |y[i]-y[j]| + |z[i]-z[j]| )/2。 令a,b,c为x,y,z间的差值,于是发现a,b,c相互独立 可单独计算。 将a,b,c分别排序 ,小的被大的减,大的被前面小的加,那么第i个数被加i-1次,被减n-i次
LL a[200010],b[200010],c[200010]; int main() { int n;LL s; int i,j; int x,y,z; while(~scanf("%d",&n) ) { s=0; if(n==0) break; for(i=1;i<=n;i++) { scanf("%d%d%d",&x,&y,&z); a[i]=x-y;b[i]=y-z;c[i]=z-x; } sort(a+1,a+1+n); sort(b+1,b+1+n); sort(c+1,c+1+n); for(i=1;i<=n;i++) { s+=(a[i]+b[i]+c[i])*(2*i-n-1); } printf("%lld\n",s/2); } return 0; }
相关文章推荐
- poj 3244 Difference between Triplets——数学
- (Relax 数论1.19)POJ 3244 Difference between Triplets(找规律..//公式max(a,b,c)-min(a,b,c)=(|a-b|+|b-c|+|a-c)
- poj 3244 Difference between Triplets
- Differences between typedef and #define
- Difference between v$temp_space_header and v$sort_segment
- What's the difference between Unicode and UTF-8?
- The difference between BEB in MACA and in MACAW
- Differences between RDM Virtual and Physical Mode
- Java - Difference between strong/weak/soft/phantom reference
- the difference between LAR, and the Bisquare Remain Robust in regression —Curve Fitting Tool
- Differences Between Enterprise, Standard and Standard One Editions on Oracle 11.2 (Doc ID 1084132.1)
- the differences between the unstructured and structured p2p network
- Difference between MRP vs MPS
- [Question] What's the difference between "redirect" & "forward" in servelt?
- The differences between Linux distributions
- Differences and data exchange between Ax3 & AX4
- The difference between Delegate and Composite
- The differences of Circuit Maintenance Messages between BICC &amp; ISUP
- The difference between migration and upgrade
- Difference of Getting DOM ElementsM Between IE6 & FF2