【NOIP考前模拟赛】纯数学方法推导——旅行者问题

一、写在前面

这题似乎是一道原创题目(不是博主原创),所以并不能在任何OJ上评测,博主在网盘上上传了数据(网盘地址:http://pan.baidu.com/s/1mibdMXi),诸位看官需者自取。另外博主使用此题并没有获得出题人授权,如果出题人看到这篇blog并认为在下侵犯了您的权利,请用站内消息与在下联系,在下会立即删除这篇blog,给您带来的困扰之处敬请谅解。

博主上传这道题主要是因为这题牵扯许多数学运算,推导过程比较复杂,但是却没有用到任何算法或者数学定理,可以说这是一道想法题的典范。本篇blog中介绍的方法为博主原创,转载请标明出处。

二、题目

题目描述

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

样例提示

样例有6种可能的旅行:

[2, 3, 5]: |2 – 0| + |3 – 2| + |5 – 3| = 5;

[2, 5, 3]: |2 – 0| + |5 – 2| + |3 – 5| = 7;

[3, 2, 5]: |3 – 0| + |2 – 3| + |5 – 2| = 7;

[3, 5, 2]: |3 – 0| + |5 – 3| + |2 – 5| = 8;

[5, 2, 3]: |5 – 0| + |2 – 5| + |3 – 2| = 9;

[5, 3, 2]: |5 – 0| + |3 – 5| + |2 – 3| = 8.

答案为 1/6 * (5+7+7+8+9+8)=44/6=22/3

数据范围

30% n<=10

50% n<=1000

100% n<=100000

三、题目分析

首先,我们不妨抛开题目背景,将题目大致翻译成一个数学题:

给出一个正整数n,并给出a1、a2……an共n个互不相同的正整数。对于序列an的每一种排列ax1、ax2……axn,令Sx=|ax1-0|+|ax2-ax1|+……+|axn-axn-1|,求S的平均数。

由于题目明确说明,当i≠j时,不存在ai=aj的情况。那么,排列的总情况数就为n的全排列即n!种。

为了便于讲解,我们规定序列an严格升序(代码实现时只需要做一次sort处理)

通过对S的定义我们不难发现,若不考虑ai作为axn的情况,对于每个i,在每个求S的算式中,ai都会作为被减数和减数各出现一次。此外,由于当i=xn时,ai在算式中不作为减数出现,并且对于每个i,i=xn的情况各有(n-1)!种,所以对于每个i,ai总共作为被减数出现n!次,作为减数出现[n!-(n-1)!]次。

我们先讨论ai作为被减数出现的情况:

当ai作为被减数时,0和其余n-1个数都可以作为ai的减数,且他们成为ai的减数的机会是均等的(ai雨露均沾??)所以含0在内的n个数各会作为ai的减数(n-1)!次。设aj为ai的减数,那么当且仅当j<i时,|ai-aj|去绝对值符号后会得到ai-aj;反之,当且仅当j>i时,|ai-aj|去绝对值符号后会得到aj-ai。由于当i合法时,0总比ai小,所以我们可以得到有i个数使ai去绝对值符号之后带正号,n-i个数使ai去绝对值符号后带负号。

以上,我们整理后得到:ai作为被减数时对ΣS的影响为:

同理,我们讨论ai作为减数出现的情况:

当ai作为减数时,其余n-1个数都可以作为ai的被减数,且他们成为ai的被减数的机会是均等的(ai雨露均沾+1)所以其余n-1个数各会作为ai的减数(n-1)!次(想一想,为什么)。设aj为ai的被减数,那么同上,当且仅当j<i时,|aj-ai|去绝对值符号后会得到ai-aj;反之,当且仅当j>i时,|aj-ai|去绝对值符号后会得到aj-ai。所以我们可以得到有i-1个数使ai去绝对值符号之后带正号,n-i个数使ai去绝对值符号后带负号。

以上,我们整理后得到:ai作为减数时对ΣS的影响为:

综合以上两种情况,我们得到:ai对ΣS的影响为:

最后,我们只需要将每个ai对ΣS的影响结合起来,便得到了答案:

注意:1、记得将答案化简为最简分数后输出(分子、分母各除以其最大公约数);

    2、不开long long见祖宗,十年OI一场空。

四、代码实现

 1 #include<stdio.h>
 2 #include<algorithm>
 3 using namespace std;
 4 const int MAXN=100010;
 5 long long a[MAXN];
 6 long long gcd(long long x,int n)
 7 {
 8     long long xx=x,yy=n;
 9     while(yy)
10     {
11         long long t=xx%yy;
12         xx=yy;
13         yy=t;
14     }
15     return xx;
16 }
17 int main()
18 {
19     freopen("tourist.in","r",stdin);
20     freopen("tourist.out","w",stdout);
21     int n;
22     long long x=0;
23     scanf("%d",&n);
24     int i;
25     for(i=1;i<=n;++i)
26         scanf("%d",&a[i]);
27     sort(a+1,a+1+n);
28     for(i=1;i<=n;++i)
29         x=x+a[i]*(4*i-2*n-1);
30     long long g=gcd(x,n);
31     printf("%lld ",x/g);
32     printf("%d\n",n/g);
33     fclose(stdin);
34     fclose(stdout);
35     return 0;
36 }
旅行者问题

弱弱地说一句,本蒟蒻码字也不容易,转载请注明出处http://www.cnblogs.com/Maki-Nishikino/p/5994679.html

转载于:https://www.cnblogs.com/Maki-Nishikino/p/5994679.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457745.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu 配置静态ip

先获取root权限: sudo su ubuntu 静态ip配置文件在 /etc/netplan/01-network-manager-all.yaml 文件初始内容可能是 # Let NetworkManager manage all devices on this system network: version: 2 renderer: NetworkManager 没有网卡配置信息 需要加入网卡配置项…

python中none是什么类型_如何在Python中”测试”None类型?

我有一个方法&#xff0c;它有时返回一个非类型的值。那么我怎样才能质疑一个非类型的变量呢&#xff1f;例如&#xff0c;我需要使用if方法if not new:new #我知道这是错误的方式&#xff0c;我希望你理解我的意思。我想这是在这里回答的&#xff0c;显然是在以前的某个地方。…

C++ 一个文件调用另一个文件的函数模板

笔记 实验得出 函数模板只能被本文件调用&#xff0c;这一点与inline函数和静态函数相似 &#xff0c;如果函数模板可能被其他文件调用 可以把函数模板定义在头文件中。与inline函数相同&#xff0c;在不同文件可以定义同名同模板列表同函数参数的函数模板&#xff0c;甚至函数…

GO 语言笔记

使用 Visual Studio Code 开发环境配置请看 http://studygolang.com/articles/8851 为什么要使用Go 语言&#xff1f;Go 语言的优势在哪里&#xff1f; - Go 语言- 知乎 请看 https://www.zhihu.com/question/21409296 基础入门看官网 https://golang.org/ & 无闻 http…

python os读取文件名_Python3基础 os.path.splitext 处理文件名,得到文件名+扩展名

Python : 3.7.0OS : Ubuntu 18.04.1 LTSIDE : PyCharm 2018.2.4Conda : 4.5.11typesetting : Markdowncode"""Author : 行初心Date : 18-10-2Blog : www.cnblogs.com/xingchuxinGitee : gitee.com/zhichengjiu"""import osdef main():file_name_…

自己写的几个常用到的函数

<?php /* * 生成指定数量和指定字符串生成随机字符串 * param int $len 获取随机字符的个数 * param string $range 指定在该字符串中获取随机字符 */ function randomString($len,$range){ if($range ){ $str 0123456789abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNP…

我有话说

欢迎留言&#xff01;

qtreewidget 获取根节点_详解去中心化信任根dRoT技术

近日&#xff0c;第21届国际信息与通信安全会议(ICICS 2019)在北京召开。ICICS是国际公认的网络与信息安全类顶级学术会议&#xff0c;汇聚了国内外诸多信息安全专家与学术泰斗。本届ICICS 2019会议围绕信息与网络安全技术的各个方面展开深入研讨&#xff0c;议题涵盖了区块链、…

反向代理服务器的工作原理

http://blog.csdn.net/keyeagle/article/details/6723408转载于:https://www.cnblogs.com/figofifa/p/5604407.html

Linux命令:bash脚本编程--脚本

练习&#xff1a;写一个脚本adminuser33.sh&#xff0c;其用法格式为&#xff1a;adminuser33.sh --add -del -h|--help -v|--verbose其中&#xff0c;-h选项只能单独使用&#xff0c;用于显示帮助信息&#xff1b;--add选项时&#xff0c;新增用户&#xff1b;如果同时使用了-…

python实参_python的形参和实参

Python中函数参数的传递是通过“赋值”来传递的。但这条规则只回答了函数参数传递的“战略问题”&#xff0c;并没有回答“战术问题”&#xff0c;也就说没有回答怎么赋值的问题。函数参数的使用可以分为两个方面&#xff0c;一是函数参数如何定义&#xff0c;二是函数在调用时…

校招碎碎念

前两天拿了去哪儿(Qunar)的offer&#xff0c;不打算接着找了&#xff0c;心累&#xff0c;结束我的校招生涯吧&#xff0c;写写这段时间的经历。 本科生一只&#xff0c;普通一本&#xff0c;非211/985学校&#xff0c;出了省就没人认那种&#xff0c;计算机专业&#xff0c;目…

pyQuery

pyquery – PyQuery complete API 选择器基本支持jQuery用法 class pyquery.pyquery.PyQuery(*args, **kwargs)The main class class FnHook for defining custom function (like the jQuery.fn): >>> fn lambda: this.map(lambda i, el: PyQuery(this).outerHtml())…

python配置pip_Python pip源配置

pipy国内镜像目前有&#xff1a;Win7下配置pip源&#xff1a;1、在win7用户目录下创建pip目录&#xff0c;以用户user为例&#xff1a;C:\Users\user\pip2、在pip目录下新建pip.ini文件&#xff1a;C:\Users\user\pip\pip.ini3、配置文件内容&#xff1a;以下是一个简单的配置示…

Github Pages建立个人博客

使用Github Pages可以建立个人博客。官方教程&#xff1a;https://pages.github.com/步骤&#xff08;以下步骤中假设用户名为username&#xff09;&#xff1a;1.建立一个项目&#xff0c;项目名为username.github.io2.初始化项目&#xff0c;上传网页代码到github。转载于:ht…

判断该网页是在什么设备打开。

为什么80%的码农都做不了架构师&#xff1f;>>> <script type"text/javascript"> //判断访问终端 var browser{versions:function(){var u navigator.userAgent, app navigator.appVersion;return {trident: u.indexOf(Trident) > -1, //IE内…

python变量和常量_python变量与常量内容:

python变量与常量内容:# 变量&#xff1a;定义世间万物变化的状态height 180weight 140age 18tree_name yuyang# print(180)height 180print(height:, height)weight 140print(weight:, weight)age 18print(age:, age)tree_name yuyangprint(tree_name:, tree_name)# 变量的…

EF二级缓存

https://efcache.codeplex.com/ 转载于:https://www.cnblogs.com/shiningrise/p/5612941.html

python wordpress xmlrpc_python-markdown自动发送wordpress文章(python-xmlrpc-wordpress)

一直热衷使用Markdown&#xff0c;使用了图床&#xff0c;以及多款的MD编辑器。wp的后台太重了&#xff0c;又不想转 hexo git &#xff0c;对于文章上传至博客&#xff0c;总想办法折腾怎么上传wordprss。之前的解决办法就是&#xff0c;直接将MD编辑器生成的html复制到wordp…

Android 5.1 - 状态栏充电标志问题

Android 5.1 Ubuntu14.04 SourceInsigh电量已满&#xff0c;插着USB头&#xff0c;观察Settings - Battery&#xff0c;电量为100%&#xff0c;状态为full&#xff0c;但仍有充电图标rust之前有读过关于StatusBar的代码。这次直接用SourceInsight找到 StatusBarHeaderView.jav…