码迷,mamicode.com
首页 > 其他好文 > 详细

20161022 NOIP模拟赛 T2 解题报告

时间:2016-10-25 19:01:58      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:das   想去   view   tchar   分享   text   class   技术分享   const   

旅行者问题

【问题描述】

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

 

—————————————分割线—————————————

每个点对答案的贡献:

技术分享

答案:

技术分享

技术分享

技术分享
 1 #include "bits/stdc++.h"
 2 
 3 using namespace std ;
 4 typedef long long QAQ ;
 5 const int maxN = 1e6 + 1e3 ; 
 6 
 7 QAQ GCD ( QAQ x , QAQ y ) {
 8         while ( x ^= y ^= x ^= y %= x ) ;
 9         return y ; 
10 }
11 int  A[ maxN ] ;
12 inline int INPUT ( ) {
13         int x = 0 , f = 1 ; char ch = getchar ( ) ;
14         while ( ch < 0 || 9 < ch ) { if ( ch == - ) f = -1 ; ch = getchar ( ) ; }
15         while ( 0 <= ch && ch <= 9 ){ x = ( x << 1 ) + ( x << 3 ) + ch - 0 ; ch = getchar ( ) ; }
16         return x * f ;
17 }
18 
19 int main ( ) {
20         QAQ N ;
21         N = INPUT ( ) ;
22         for ( int i=1 ; i<=N ; ++i ) {
23                 A[ i ] = INPUT ( ) ;
24         }
25         QAQ sum = 0 ;
26         
27         stable_sort ( A + 1 , A + N + 1 ) ;
28         
29         for ( int i=1 ; i<=N ; ++i ) {
30                 sum += ( QAQ ) A[ i ] * ( 4*i - 2*N - 1 ) ;
31         }
32         QAQ D = GCD ( sum , N ) ; 
33         cout << sum / D <<   << N / D << endl ; 
34         return 0 ; 
35 }
View Code

2016-10-25  18:07:05

20161022 NOIP模拟赛 T2 解题报告

标签:das   想去   view   tchar   分享   text   class   技术分享   const   

原文地址:http://www.cnblogs.com/shadowland/p/5997455.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!