【2767】2017年10月10日提高组T1 xjh的旅行
问题描述
lahub是一个旅行者的粉丝,他想成为一个真正的旅行者,所以他计划开始一段旅行。lahub想去参观n个目的地(都在一条直道上)。lahub在起点开始他的旅行。第i个目的地和起点的距离为ai千米(ai为非负整数)。不存在两个目的地和起点的距离相同。
从第i个目的地走到第j个目的地所走的路程为 |ai-aj|千米。我们把参观n个目的地的顺序称作一次“旅行”。lahub可以参观他想要参观的任意顺序,但是每个目的地有且只能被参观一次(参观顺序为n的排列)。
lahub把所有可能的“旅行”都写在一张纸上,并且记下每个“旅行”所要走的路程。他对所有“旅行”的路程之和的平均值感兴趣。但是他觉得计算太枯燥了,所以就向你寻求帮助。
输入
第一行一个正整数n。
第二行n个非负整数a1,a2,….,an(1≤ai≤10^7)。
输出
两个整数,答案用最简分数形式输出,第一个为分子,第二个为分母。
样例输入
3
2 3 5
样例输出
22 3
算法讨论
考虑将这些路径拆成许多的两点间的路径,考虑两点间的路径对答案的贡献。
先考虑起点到Ai这种路径,这条路径确定之后,后面的路径方案就与这条路径无关,后面的方案数一共有 (n-1)!,由于它是单向边且不能改变位置,所以这种路径对路径和的贡献为(n-1)!*Ai。
现在考虑任意两点路径Ai,Aj,除了这两个点的其他的n-2个点方案总数为(n-2)!,而我们可以将这条路径插入在任意的一个位置,共有n-1个位置,故这条路径的方案总数为(n-2)!*(n-1)即(n-1)!,对路径和的贡献为(n-1)!*abs(Ai-Aj)。
所以路径和就转化为求(n-1)!Σabs(Ai-Aj)(1<=i,j<=N,i≠j)+(n-1)!ΣAi。
问题的关键就是求这Σabs(Ai-Aj)。
将所有的Ai排序后,实际上只要考虑从大的点往小的点走,最后路径和*2即可。
然后考虑如何计算:
假设a1 > a2 > a3 > a4,
以Ai为结尾的Ai-Aj的和为Si,
那么:
S2 = a1 - a2
S3 = a1 - a3 + a2 - a3 = (a1 - a2 + a2 - a3) + a2 - a3 = S2 + 2 *(a2 - a3)
S4 = a1 - a4 + a2 - a4 + a3 - a4 = (a1 - a3 + a3 - a4) + (a2 - a3 + a3 - a4) + (a3 - a4)
= S3 + 3 * (a3 - a4)
于是发现Si其实是可以递推的。
答案中分子的(n-1)!与分母的n!相约后只剩一个n,求出c=gcd(ans,n)再分别除以c输出即可。
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
#define maxn 100001
long long a[maxn];
long long n;
long long s,s1,t;long long gcd(long long a,long long b)
{if (b==0)return a;elsegcd(b,a%b);
}long long read()
{long long x = 0, p = 1; char ch = getchar();while (ch < '0' || ch > '9') {if (ch == '-') p = -1; ch = getchar();}while (ch >= '0' && ch <= '9') {x = (x << 1) + (x << 3) + ch - '0'; ch = getchar();}return x * p;
}
void write(long long ans)
{if (ans >= 10)write(ans / 10);putchar(ans % 10 + '0');
}
int main()
{scanf("%lld",&n);for (int i=1;i<=n;i++){a[i] = read();s+=a[i];}sort(a+1,a+n+1);for (int i=1;i<=n;i++){s1+=a[i]*(i-1);s1-=a[i]*(n-i);}s+=s1*2;t=gcd(s,n);write(s/t);putchar(' ');write(n/t);
}
Pixiv ID:56805327
【2767】2017年10月10日提高组T1 xjh的旅行相关推荐
- SSL2668 2017年8月7日提高组T1 根(dfs)
2017年8月7日提高组T1 根 Description 一天,小B得到了一棵n个节点的树.无聊至极的小B想要找出一个点,使得以这个点为根时,所有点的深度之和最大.但小B打开手机,发现他最爱的re:c ...
- SSL2811 2017年10月30日提高组T2 摘Galo(树形dp)
2017年10月30日提高组T2 摘Galo Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有 ...
- SSL2793 2017年10月26日提高组T2 Deep(博弈)
2017年10月26日提高组T2 Deep Description 失败的燃烧军团想要逃回深渊,Khadgar 想要追击它们. 然而进入深渊的传送门只有一座,燃烧军团和Khadgar 各有一些法力水晶 ...
- JZOJ6月20日提高组T1 小麦亩产一千八
JZOJ6月20日提高组T1 小麦亩产一千八 题目 Description Input Output Sample Input Data Constraint 分析 Code 题目 Descripti ...
- 【NOIP2015模拟11.3晚】JZOJ7月31日提高组T1 次芝麻
[NOIP2015模拟11.3晚]JZOJ7月31日提高组T1 次芝麻 题目 题解 题意 分析 Code 题目 题解 题意 给出两个数 x x x, y y y 每次操作会将小的数乘2,大的数减去小的 ...
- 【SSLGZ 2811】2017年10月30日提高组T2 摘Galo
问题描述 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Galo,美味度为w ...
- 2017年10月23日提高组T2 灵知的太阳信仰 单调队列优化dp
Description 在炽热的核熔炉中,居住着一位少女,名为灵乌路空. 据说,从来没有人敢踏入过那个熔炉,因为人们畏缩于空所持有的力量--核能. 核焰,可融真金. 咳咳. 每次核融的时候,空都会选取 ...
- 【SSLGZ 2812】2017年10月30日提高组T2 凤凰院真凶
问题描述 输入 输出 第一行一个整数k,表示最长公共合法事件序列的长度. 样例输入 5 1 4 2 5 1 4 1 1 2 4 样例输出 2 数据范围 算法讨论 f[i][j]为a到第i个位置,b到第 ...
- 2020年10月30日提高组 B 超级蚯蚓
文章目录 ResultResultResult HyperlinkHyperlinkHyperlink DescriptionDescriptionDescription SolutionSoluti ...
最新文章
- 返回顶部的js实现(jQuery/MooTools)
- svcagent32.exe,javaM.exe木马查杀解决方案 (转Ad0.cn)
- matlab结构阵列设计,ROM阵列及其版图结构的制作方法
- c++常见的排序表与复杂度
- go语音protobuf_golang 使用 protobuf 的教程
- span标签的鼠标滑入提示_彻底搞懂拖拽——基于鼠标事件的拖拽以及基于HTML5 API的拖拽...
- ecos中的spl同步机制
- 数字特征:矩 协方差矩阵
- 深入理解Java Proxy机制
- Java使用IntelliJ IDEA创建一个基于Swing的GUI图形化程序,打包发布为jar
- oracle学习资料大全
- 微粒群算法(PSO)
- 五线谱中蕴含的数学问题
- linux结合阿里云企业邮箱配置mailx
- HTML5期末大作业:关于家乡介绍主题网页设计——云南民族文化(8页) HTML+CSS+JavaScript 期末作业HTML代码 学生网页课程设计期末作业下载 web网页设计制作成品
- Excel批量修改数据透视表值字段设置
- onedriver -1T容量,edu邮箱申请。
- 蓝牙 4.0 ATT属性协议
- 计算机编程 计算存款利息,第8周项目5-定期存款利息计算器
- python反向切片_python切片
热门文章
- GIMPS梅森素数搜寻及相关算法综述
- oracle周转率报告,Oracle ERP系统维护经验谈
- 为西安地铁“让路” 47条公交线路有调整
- Java程序员面试笔试宝典刷题总结~11
- Win10启用/禁用【受控制文件夹的访问】
- Error: The superclass, ‘Animal‘, has no unnamed constructor that takes no arguments.
- dubbo学习篇1 注解之 @Reference 原理解析
- CT和MRI的局限性和克服措施
- 当图网络遇上计算机视觉!计算机视觉中基于图神经网络和图Transformer的方法和最新进展...
- 10个问题让你秒懂变压器!