C. Tourist Problem 2021.3.29 晚vj拉题 cf 1600 纯数学题
拉题链接 https://vjudge.net/contest/430219#overview
原题链接 https://codeforces.com/problemset/problem/340/C
前言
cf 1600的题, 直接拿来给大一的做, 感觉有亿点点难, 这是个纯数学题, 我用的排列组合方法推导
题目


题意(其实我觉得还是看上边的Note好理解)
给n个数(分别为a1, a2 ...... an-1, 把这n个数全排(共Ann 个序列)一遍, 对于每个序列, 值=每个|ai - ai-1|之和(i = 1~n) , 其中, i = 0时, 为|a1-0|
然后, 将这n的阶乘个式子的值加起来, 先用res表示, 最后输出res/g 和 Ann / g (g为res与Ann 最大公因数)
题解
硬做会超时, 要想着归纳
一 : 当对于一种序列, 比如2 3 5(注意5在最后面): |2 – 0| + |3 – 2| + |5 – 3| = 5; 5只出现1次, 其余2 3都出现2次,
即: 一种序列中最后面的数出现一次, 前n-1个数出现2次
====> 在这所有排列中, 每个数出现总次数 = 2 * (n的阶乘) - (n-1的阶乘)
对式子的解释: 2 * (n的阶乘): 所有数全排的种类数 * 一种排列出现两次; (n - 1的阶乘): 当这个数在最后时, 前面的数全排
二 : 先把绝对值拆开, 比如 |2 – 0| + |3 – 2| + |5 – 3| = 2 + 3 - 2 + 5 - 3 ,最大值5一定是正的, 3与2搭配时-->3为正; 3与5搭配时-->3为负
即: 一个数与比它大的数搭配(挨着,不分前后)时, 它为负, 与比它小的数搭配时, 它为正
====> 设大于n的数有m个, 减去一个数的次数(为负的次数) = 2 * m * (n - 1的阶乘)
对式子的解释: 2为该数与另一个数的两种排列, m: 从m个比它大的数挑一个, 也就是Cm1 ; (n - 1的阶乘) : 该数与另一个数绑定后全排
重点来了, 结果快来了
这个数最后是加减了多少倍呢?
每个数出现的次数
= 正的次数 - 负的次数
= ( 出现的总次数 - 负的次数 ) - 负的次数
= 第一个式子 - 2 * 第二个式子
= [2 * (n的阶乘) - (n-1的阶乘)] - [2 * ( 2 * m * (n - 1的阶乘) )]
那结果 = [ 2 * (n的阶乘) - (n-1的阶乘) - 2 * 2 * m * (n - 1的阶乘) ] 和 n的阶乘 ~~~(约去n-1的阶乘)~~~
= 2 * n - 1 - 4 * m 和 n
m = 大于该数的个数, 对数组小到大排序后(下标从0开始), 大于该数的个数 = n - i - 1, 带入上式即可
(化简 = 2n-1-4n+4i+4 = 4i-2n+3)
代码
#include <iostream>
#include <algorithm> using namespace std; typedef long long ll; const int N = 1e5 + 10; ll res = 0, fenmu = 1;
ll a[N]; ll gcd(ll a, ll b)
{
return b? gcd(b, a % b): a;
}
int main()
{
int n;
cin >> n;
for(int i = 0; i < n; i ++)
scanf("%lld", &a[i]); sort(a, a+n);
for(int i = 0; i < n; i ++)
res += (2 * n - 1 - 4 * (n - i - 1)) * a[i];
// res += (4i-2n+3) * a[i];
int g = gcd(res, n);
cout << res/g << ' '<< n/g << endl;
return 0;
}
C. Tourist Problem 2021.3.29 晚vj拉题 cf 1600 纯数学题的更多相关文章
- C. Tourist Problem
http://codeforces.com/problemset/problem/340/C 赛时没想出赛后却能较快想出深深的教育自己做题一定要静下心来,不要轻易放弃,认真思考,不要浮躁着急,不要太容 ...
- codeforces 340C Tourist Problem(公式题)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Tourist Problem Iahub is a big fan of tou ...
- Codeforces Round #198 (Div. 2) C. Tourist Problem
C. Tourist Problem time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- Codeforces Round #198 (Div. 2) C. Tourist Problem (数学+dp)
C. Tourist Problem time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- CodeForces - 340 C - Tourist Problem
先上题目: A - Tourist Problem Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & ...
- 2021.10.29 数位dp
2021.10.29 数位dp 1.数字计数 我们先设数字为ABCD 看A000,如果我们要求出它所有数位之和,我们会怎么求? 鉴于我们其实已经求出了0到9,0到99,0到999...上所有数字个数( ...
- 2021.10.29 P1649 [USACO07OCT]Obstacle Course S(BFS)
2021.10.29 P1649 [USACO07OCT]Obstacle Course S(BFS) 题意: 给一张n*n的图,起点为A,终点为 B,求从A到B转弯次数最少为多少. 分析: 是否存在 ...
- 2021.12.21 eleveni的刷题记录
2021.12.21 eleveni的刷题记录 0. 有意思的题 P6701 [POI1997] Genotype https://www.luogu.com.cn/problem/P6701 状压优 ...
- 2021.12.19 eleveni的刷题记录
2021.12.19 eleveni的刷题记录 0. 本次记录有意思的题 0.1 每个点恰好经过一次并且求最小时间 P2469 [SDOI2010]星际竞速 https://www.luogu.com ...
随机推荐
- Flash XSS
示例: 创建一个测试flash,代码如下,导出swf文件 //取m参数 var m=_root.m; //取showInfo参数 var showInfo=_root.showInfo; //调用ht ...
- Struts2里面有什么隐式对象?
Struts 2.1 的隐式对象 (这些隐式对象都是Map类型) parameters 用于访问请求参数 request 用于访问HttpServletRequest的属性 session 用于访问H ...
- 解释Spring支持的几种bean的作用域?
Spring框架支持以下五种bean的作用域: singleton :bean在每个Spring ioc 容器中只有一个实例. prototype:一个bean的定义可以有多个实例. request: ...
- 不同版本的 Spring Framework 有哪些主要功能?
Version Feature Spring 2.5 发布于 2007 年.这是第一个支持注解的版本. Spring 3.0 发布于 2009 年.它完全利用了 Java5 中的改进,并为 JEE6 ...
- 3.Spark设计与运行原理,基本操作
1.Spark已打造出结构一体化.功能多样化的大数据生态系统,请用图文阐述Spark生态系统的组成及各组件的功能. Spark生态系统主要包含Spark Core.Spark SQL.Spark St ...
- OpenCV - Add Noise的一些方法
噪声常用有两种:一种椒盐噪声,一种高斯噪声. import numpy as np def pepper_and_salt(src, proportion): """ : ...
- C语言杂谈
C语言程序处理过程 预处理:宏定义展开.头文件展开.条件编译,这里并不会检查语法 编译:检查语法,将预处理后文件编译生成汇编文件 汇编:将汇编文件生成目标文件(二进制文件) 链接:将目标文件链接为可执 ...
- numpy入门—numpy是什么
numpy是什么?为什么使用numpy 使用numpy库与原生python用于数组计算性能对比
- 转Gerber和拼版
1 Gerber 这个网上有现成的教程:(不要写网上能找到的资料-敏捷开发) AD 导出Gerber :https://jingyan.baidu.com/article/3c48dd3494181c ...
- APICloud重磅支持Atom编辑器,并建立开发工具核心库
APICloud技术再次升级,不仅支持Atom编辑器开发工具,并推出核心开发工具库,使开发者进行App开发更便捷高效. APICloud支持Atom编辑器开发工具 APICloud始终坚持多开发工具支 ...