poj3244(数学公式推导)
来源:互联网 发布:手机淘宝怎么改店铺名 编辑:程序博客网 时间:2024/06/14 07:02
链接:点击打开链接
题意:给出n个三元组(n<=200000),定义D(i,j)=max(xi-xj,yi-yj,zi-zj)-min(xi-xj,yi-yj,zi-zj),求任意两点的D的和
代码:
#include <bitset>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;long long a[400005],b[400005],c[400005];int main(){ long long n,i,x,y,z,ans; //将xi-xj,yi-yj,zi-zj放在数轴上, while(scanf("%I64d",&n)!=EOF&&n){ //则max(xi-xj,yi-yj,zi-zj)-min(xi-xj,yi-yj,zi-zj) for(i=1;i<=n;i++){ //为三点所形成的线段的长度。但是不知道大小关系,因此 scanf("%I64d%I64d%I64d",&x,&y,&z); //用(|(xi-xj)-(yi-yj)|+|(xi-xj)-(zi-zj)|+|(yi-yj)-(zi-zj)|)/2 a[i]=x-y; //来表示线段长度,化简后得(|(xi-yi)-(xj-yj)|+|(xi-zi)-(xj-zj)|+|(yi-zi)-(yj-zj)|)/2 b[i]=x-z; //令xi-yi=ai,xi-zi=bi,yi-zi=ci,因此变为(|ai-aj|+|bi-bj|+|ci-cj|)/2, c[i]=y-z; //所以分别将a,b,c排序,算出每个点的贡献值 } sort(a+1,a+n+1); sort(b+1,b+n+1); sort(c+1,c+n+1); ans=0; for(i=1;i<=n;i++){ ans+=(i-1)*a[i]+(-1)*(n-i)*a[i]; ans+=(i-1)*b[i]+(-1)*(n-i)*b[i]; ans+=(i-1)*c[i]+(-1)*(n-i)*c[i]; } printf("%I64d\n",ans/2); } return 0;}
0 0
- poj3244(数学公式推导)
- POJ3244-数学公式
- hdu 1046 数学公式推导
- hdu 1049 数学公式推导
- HDU2552(数学公式推导)
- PCA的数学公式推导
- 常用数学公式推导及概念
- BP神经网络的数学公式推导
- Expanding Rods(数学公式推导+二分)
- hdu2086 A1=?(数学公式推导)
- SVM数学公式推导及个人总结
- 求和(数学公式推导、取余运算)
- Cf 364div2 D[数学公式推导]
- poj 3761 Panda's Birthday Present (数学公式推导~~推?)
- poj 1045/3299 数学公式推导(欧姆定律/湿度值)
- C. DNA Alignment 数学公式推导 Codeforces Round #295 (Div. 2)
- POJ 1905 Expanding Rods 二分加数学公式的推导
- 关于Online Judge题目tick and tick的数学公式推导
- [RK3288][Android6.0] 调试笔记 --- 实时录音会有呲呲噪音问题
- find_first_of();find_last_of();find();
- 移动开发网络杂谈
- Unity3DGame学习笔记:背包系统(homework10)
- Nginx的启动、暂停、重启命令
- poj3244(数学公式推导)
- Unity简单修改UV的动画脚本
- openstack的用户(user), 租户(tenant), 角色(role)概念区分
- HDU 5710 Digit-Sum (构造)
- android 实现简单注册登陆公能
- 【CNNCRF】Efficient Piecewise Training of Deep Structured Models for Semantic Segmentation
- 标志寄存器
- Java虚拟机内存模型
- Cypher语言语法简介