题意

对于每一个三元组:Ta=(Ia,Ja,Ka),Tb=(Ib,Jb,Kb)T_a=(I_a,J_a,K_a),T_b=(I_b,J_b,K_b)Ta​=(Ia​,Ja​,Ka​),Tb​=(Ib​,Jb​,Kb​)定义:
D(Ta,Tb)=max⁡{Ia−Ib,Ja−Jb,Ka−Kb}−min⁡{Ia−Ib,Ja−Jb,Ka−Kb}D(T_a,T_b)=\max\{I_a-I_b,J_a-J_b,K_a-K_b\}-\min\{I_a-I_b,J_a-J_b,K_a-K_b \} D(Ta​,Tb​)=max{Ia​−Ib​,Ja​−Jb​,Ka​−Kb​}−min{Ia​−Ib​,Ja​−Jb​,Ka​−Kb​}
求 ∑i=1N∑j=i+1ND(Ti,Tj)\sum_{i=1}^{N}{\sum_{j=i+1}^{N}{D(T_i,T_j)}}∑i=1N​∑j=i+1N​D(Ti​,Tj​) 的值。
数据范围:N≤2×105N\leq 2\times 10^5N≤2×105,每个元素的范围:[−106,106][-10^6,10^6][−106,106]

分析

关键在于公式的化简:
max⁡(a,b,c)−min⁡(a,b,c)=∣a−b∣+∣a−c∣+∣b−c∣2\max(a,b,c)-\min(a,b,c)=\frac{|a-b|+|a-c|+|b-c|}{2} max(a,b,c)−min(a,b,c)=2∣a−b∣+∣a−c∣+∣b−c∣​
代入三元组,可得:
D(Ta,Tb)=∣(Ia−Ja)−(Ib−Jb)∣+∣(Ja−Ka)−(Jb−Kb)∣+∣(Ia−Ka)−(Ib−Kb)∣2D(T_a,T_b)=\frac{|(I_a-J_a)-(I_b-J_b)|+|(J_a-K_a)-(J_b-K_b)|+|(I_a-K_a)-(I_b-K_b)|}{2} D(Ta​,Tb​)=2∣(Ia​−Ja​)−(Ib​−Jb​)∣+∣(Ja​−Ka​)−(Jb​−Kb​)∣+∣(Ia​−Ka​)−(Ib​−Kb​)∣​
现在,我们要想办法去掉绝对值。对每个 TiT_iTi​,求出 (Ii−Ji),(Ii−Ki),(Ji−Ki)(I_i-J_i),(I_i-K_i),(J_i-K_i)(Ii​−Ji​),(Ii​−Ki​),(Ji​−Ki​),然后分别从小到大排序。对于 (Ii−Ji)(I_i-J_i)(Ii​−Ji​),假设它出现在排列后的第 xxx 个位置,那么他对最后的答案会有 x−1x-1x−1 个正的贡献,n−xn-xn−x 个负的贡献,最终的贡献为 2x−n−12x-n-12x−n−1。对其它两个同样处理,即可得到结果。

代码

#include <cstdio>
#include <algorithm>
#include <set>
#include <iostream>
using namespace std;
typedef long long ll;
const int N=2e5+5;
int a[N],b[N],c[N];
int main(){int n;while(scanf("%d",&n),n!=0){for(int i=1;i<=n;i++){int x,y,z;scanf("%d%d%d",&x,&y,&z);a[i]=x-y;b[i]=x-z;c[i]=y-z;}sort(a+1,a+1+n);sort(b+1,b+1+n);sort(c+1,c+1+n);ll ans=0;for(int i=1;i<=n;i++){ans+=1LL*(2*i-n-1)*a[i];ans+=1LL*(2*i-n-1)*b[i];ans+=1LL*(2*i-n-1)*c[i];}printf("%lld\n",ans/2);}return 0;
}

Difference between Triplets POJ - 3244相关推荐

  1. POJ 图论---1_Uriel's Corner Uriel's Coding Learning Cubing Zone

    原文地址: http://www.cppblog.com/Uriel/articles/121814.html 内容: 刚开始学图论不久,这个是自己做过的一点图论水题,不一定全,有什么错误或者大家有其 ...

  2. ACM 数学类题目推荐

    转:http://blog.sina.com.cn/s/blog_6635898a0100magq.html 1.burnside定理,polya计数法     这个大家可以看brudildi的< ...

  3. 叉姐的魔法训练小结(未完结)

    说起叉姐,这是一个让人ym的上古神犇,欣赏了一波叉姐的vj,上面挂的基础魔法训练对我来说每题都是神题. 每天做一两个,做了几天终于做了好几个题了,现在写一下心得. POJ 2443 这题给你1000个 ...

  4. POJ 2718 Smallest Difference

    题目 Smallest Difference Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19791 Accepted: 53 ...

  5. POJ 2718 Smallest Difference 贪心构造

    不用说,想让两个数的差最小,那这个两个数的位数要最接近. 不妨设a>b; 如果n是奇数 a就是最小的(n/2+1)位数,b就是最大的n/2位数 如果是偶数 枚举每一对相邻的数,大的作为a的第一位 ...

  6. POJ 2718 Smallest Difference(dfs,剪枝)

    枚举两个排列以及有那些数字,用dfs比较灵活. dfs1是枚举长度短小的那个数字,dfs2会枚举到比较大的数字,然后我们希望低位数字的差尽量大, 后面最优全是0,如果全是0都没有当前ans小的话就剪掉 ...

  7. POJ 2718 Smallest Difference

    分奇数和偶数两种情况进行讨论,奇数可贪心,偶数没想到贪心的方法,采用直接枚举的方法过的~~~ #include <cmath> #include <cstdio> #inclu ...

  8. Poj(1459),最大流,EK算法

    题目链接:http://poj.org/problem?id=1459 Power Network Time Limit: 2000MS   Memory Limit: 32768K Total Su ...

  9. POJ 3264 Balanced Lineup【线段树区间查询求最大值和最小值】

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 53703   Accepted: 25237 ...

  10. POJ 3264 Balanced Lineup

    POJ 3264 Balanced Lineup 题目链接 Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,00 ...

最新文章

  1. 为什么Python在数据科学领域比R更受欢迎呢?
  2. 在Win7的IIS上搭建FTP服务及用户授权
  3. Nervos 双周报第 3 期:佛系新年之后的开工大吉!
  4. xcode编译Undefined symbols for architecture i386问题解决
  5. lwip协议栈优化_干货分享 | KNI性能优化实践
  6. ZOJ 3702 Gibonacci number(数学推导题)
  7. windowsthinpc虚拟内存_windows thin pc如何开启windows功能
  8. SharePoint咨询师之路:设计之前的那些事四:负载均衡 - web服务器
  9. IOS-网络(数据安全:MD5加密)
  10. 05 | 服务编排层:Pipeline 如何协调各类 Handler ?
  11. 删除一个空目录的JAVA代码
  12. ViewFlipper(翻转视图)使用详解
  13. 协程学习一:nty协程的设计原理及效率分析
  14. linux没有安装防火墙,Linux安装防火墙
  15. 抖音新版抓包方案,绕过sslpinning 直接修改so
  16. xay loves or
  17. 百度的AI技术定力终见真章
  18. VSCode快速生成HTML基础模板--输入!一键快捷生成--无法自动生成的解决办法
  19. 分享免端口访问群晖的方法,可以顶级域名
  20. docker网络连接——docker network connect命令

热门文章

  1. luogu P3934 [Ynoi2016] 炸脖龙 I
  2. ppt画图画不下——调整ppt页面的大小
  3. 试题 算法训练 娜神平衡python
  4. android朋友圈九宫格图片尺寸,朋友圈图片尺寸多少厘米(附朋友圈发图技巧)...
  5. matlab无人机路径规划,一种新的优化算法,天牛群算法,比蚁群算法效果好,收敛快
  6. 三星6.0系统机器(亲测有效)激活XPOSED框架的流程
  7. 安卓手机格式化怎么弄_安卓手机怎么格式化
  8. vue 自定义 文字背景
  9. 推荐10个易上手好用的H5网页编辑工具
  10. Flutter 2.10 正式发布,包含 Windows 平台正式版,快来看看有什么新内容