20161022 NOIP模拟赛 T1 解题报告
2016-10-25 18:07
323 查看
[b]旅行者问题[/b]
【问题描述】
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
—————————————分割线—————————————
每个点对答案的贡献:
View Code
2016-10-25 18:07:05
【问题描述】
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
—————————————分割线—————————————
每个点对答案的贡献:
#include "bits/stdc++.h" using namespace std ; typedef long long QAQ ; const int maxN = 1e6 + 1e3 ; QAQ GCD ( QAQ x , QAQ y ) { while ( x ^= y ^= x ^= y %= x ) ; return y ; } int A[ maxN ] ; inline int INPUT ( ) { int x = 0 , f = 1 ; char ch = getchar ( ) ; while ( ch < '0' || '9' < ch ) { if ( ch == '-' ) f = -1 ; ch = getchar ( ) ; } while ( '0' <= ch && ch <= '9' ){ x = ( x << 1 ) + ( x << 3 ) + ch - '0' ; ch = getchar ( ) ; } return x * f ; } int main ( ) { QAQ N ; N = INPUT ( ) ; for ( int i=1 ; i<=N ; ++i ) { A[ i ] = INPUT ( ) ; } QAQ sum = 0 ; stable_sort ( A + 1 , A + N + 1 ) ; for ( int i=1 ; i<=N ; ++i ) { sum += ( QAQ ) A[ i ] * ( 4*i - 2*N - 1 ) ; } QAQ D = GCD ( sum , N ) ; cout << sum / D << ' ' << N / D << endl ; return 0 ; }
View Code
2016-10-25 18:07:05
相关文章推荐
- 20161022 NOIP模拟赛 解题报告
- 20161005 NOIP 模拟赛 T2 解题报告
- 纪中训练 day2 【NOIP普及组】模拟赛D组 解题报告
- 纪中训练 day5 【NOIP普及组】模拟赛D组 解题报告
- 20161005 NOIP 模拟赛 T3 解题报告
- NOIP欢乐模拟赛 T3 解题报告
- 纪中训练 day4 【NOIP普及组】模拟赛D组 解题报告
- 20161003 NOIP 模拟赛 T2 解题报告
- 纪中训练 day8 【NOIP普及组】模拟赛D组 解题报告
- 纪中训练 day6 【NOIP普及组】模拟赛D组 解题报告
- 纪中训练 day14【NOIP普及组】模拟赛B组&C组 解题报告
- 20161023 NOIP 模拟赛 T1 解题报告
- 2018.10.6 NOIP模拟赛解题报告
- NOIP欢乐模拟赛 T1 解题报告
- 纪中训练 day10【NOIP普及组】模拟赛D组 解题报告
- 20161004 NOIP 模拟赛 T1 解题报告
- 20161023 NOIP 模拟赛 T2 解题报告
- 2017.9.17校内noip模拟赛解题报告
- NOIP欢乐模拟赛 T2 解题报告
- 9月24日noip模拟赛解题报告