[COGS 2066]七十和十七
2066. 七十和十七
★★★ 输入文件:
xvii.in输出文件:xvii.out简单对比
时间限制:1 s 内存限制:256 MB【题目描述】
七十君最近爱上了排序算法,于是Ta让十七君给Ta讲冒泡排序。
十七君给七十君讲完了冒泡排序以后,七十君回家苦思冥想,又创造了一种名
为七十排序的算法。下面是这个算法排序一个排列的过程:
首先从左到右扫描每个相邻数对。如果这两个数是逆序的,则将第二个数(也
就是小的数)放在整个排列的开头,其他数位置不变,并把计数器加一。如果
没有逆序的相邻数对了,就说明已经排好序了,算法终止。
七十君认为计数器的值反映了这个算法的运行时间。但十七君觉得七十君发明
的这个算法会很慢,所以他请你帮忙算算,对于所有长度为n的排列P,
\[E(n)=\frac{\sum f(P)}{n!}\]
的值,这里f(P)表示排列P运行算法结束时计数器的值。
【输入格式】
一行一个整数n。
【输出格式】
如果E(n)=a/b,求c使得
bc 三 a (mod 10^9+7)
并输出,其中0≤c<10^9+7,如果e不存在输出-1。
【样例输入】
4【样例输出】
250000005【提示】
对于排列4 1 3 2,算法结束时计数器的值为5。
4 1 3 2,4和1形成逆序,将1放到排列最前方。
1 4 3 2,4和3形成逆序,将3放到排列最前方。
3 1 4 2,3和1形成逆序,将1放到排列最前方。
1 3 4 2,4和2形成逆序,将2放到排列最前方。
2 1 3 4,2和1形成逆序,将1放到排列最前方。
1 2 3 4,现在排列已经排序完毕。
E(4)=3.25。
数据范围与约定
对于20%的数据,n≤8。
对于40%的数据,n≤30。
对于60%的数据,n≤200。
对于1OO%的数据,n≤10^5。
题解
首先我们可以发现, 将 $n$ 个数排序的过程可以转化为按方案排序 $n-1$ 个数后将最后一个数按方案再排进去. 对于长度为 $n$ 的全排列, 若第 $n$ 个数 $a_n=n$ , 则不会引起计数器变动(因为它在前 $n-1$ 个排好序后就已经在最后了), 否则会引起计数器增加 $2^{a_n-1}$ . 枚举最后加入的数 $a_n$ 即可在 $O(n^2)$ 时间复杂度内解决. 最终表达式为:
\[ans=\sum_{i=1}^n\sum_{j=1}^{i-1}2^{j-1}\]
注意到第二部分求和为等差数列形式, 我们可以通过等差数列求和公式进行计算. 于是上式可以化简为:
\[ans=\sum_{i=1}^n\frac{2^{i-1}-1}{i}\]
参考代码
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm> const int MOD=1e9+; int Pow(int,int,int); int main(){
int n;
scanf("%d",&n);
int ans=;
for(int i=;i<=n;i++){
ans=(ans+1ll*(Pow(,i-,MOD)-+MOD)%MOD*Pow(i,MOD-,MOD)%MOD)%MOD;
}
printf("%d\n",ans);
return ;
} int Pow(int a,int n,int p){
int ans=;
while(n>){
if((n&)!=){
ans=1ll*ans*a%p;
}
a=1ll*a*a%p;
n>>=;
}
return ans;
}
Backup

[COGS 2066]七十和十七的更多相关文章
- [COGS 2066]七十与十七
http://218.28.19.228/cogs/problem/problem.php?pid=2066 [题目描述] 七十君最近爱上了排序算法,于是Ta让十七君给Ta讲冒泡排序. 十七君给七十君 ...
- 8.22 NOIP模拟测试29(B) 爬山+学数数+七十和十七
T1 爬山 二分最高高度,$O(1)$判断是否可行. #include<iostream> #include<cstdio> #define ll long long usin ...
- NOIP模拟测试29「爬山·学数数·七十和十七」
爬山题解不想写了 学数数 离散化然后找到以每一个值为最大值的连续子段有多少个,然后开个桶维护 那么怎么找以每一个值为最大值的连续子段个数 方法1(我的极笨的方法) 考试时我的丑陋思路, 定义极左值为左 ...
- “全栈2019”Java第七十六章:静态、非静态内部类访问权限
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- (七十八)使用第三方框架INTULocationManager实现定位
前面(第七十五.七十六篇)讲述了如何通过CoreLocation获取位置,授权.获取等相当复杂,如果借助于第三方框架,可以简单的实现授权与定位. 首先在GitHub中搜索LocationManager ...
- 第三百七十九节,Django+Xadmin打造上线标准的在线教育平台—xadmin的安装
第三百七十九节,Django+Xadmin打造上线标准的在线教育平台—xadmin的安装 xadmin介绍 xadmin是基于Django的admin开发的更完善的后台管理系统,页面基于Bootstr ...
- 第三百七十八节,Django+Xadmin打造上线标准的在线教育平台—django自带的admin后台管理介绍
第三百七十八节,Django+Xadmin打造上线标准的在线教育平台—django自带的admin后台管理介绍 配置django的admin数据库管理后台 首先urls.py配置数据库后台路由映射,一 ...
- 第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表、课程评论表、用户收藏表、用户消息表、用户学习表
第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表.课程评论表.用户收藏表.用户消息表.用户学习表 创建名称为ap ...
- 第三百七十五节,Django+Xadmin打造上线标准的在线教育平台—创建课程机构app,在models.py文件生成3张表,城市表、课程机构表、讲师表
第三百七十五节,Django+Xadmin打造上线标准的在线教育平台—创建课程机构app,在models.py文件生成3张表,城市表.课程机构表.讲师表 创建名称为app_organization的课 ...
随机推荐
- finally是否始终执行
The only times finally won't be called are: If you call System.exit() If the JVM crashes first If th ...
- JQuery Div scrollTop ScrollHeight
jQuery 里和滚动条有关的概念很多,但是有三个属性和滚动条的拖动有关,就是:scrollTop.scrollLeft.scrollHeight.其中 scrollHeight 属性,互联网上几乎搜 ...
- 一句话讲清URI、URL、URN
关于URI,URL ,URN URN(Uniform Resource Name):统一资源名称 URL(Uniform Resource Locator):统一资源定位符 URI(Uniform R ...
- echarts实现自动轮播tooltip
最近需要实现echarts图形中hover效果轮播(即tooltip在各个数据点上轮流显示)的功能,以下就是我学习的一个过程,只是提供思路,具体场景需要自己修改.(仅针对echarts 2.2.7及以 ...
- jquery实现的让图片在网页的可视区域里四处漂浮的效果
本文分享给大家一个用jquery开发的图片漂浮效果. jquery图片漂浮效果,常见的就是网页里四处漂来漂去的广告了,漂到边缘时还会反弹和拐弯. 下面来看具体的代码,先看要实现漂亮效果的这个jquer ...
- Metronic 对话 chat
http://keenthemes.com/preview/metronic/theme/admin_1/index.html: jquery让滚动条默认在最底部:$('#content').scro ...
- WPF实现动画的几种方式及其小案例
WPF实现动画的方式: 基于计时器的动画 建立一个定时器,然后根据其频率循环调用函数或者一个事件处理函数,在这个函数中可以手工更新目标属性,直到达到最终值,这时可以停止计时器. 案例: 效果图: XA ...
- 令人头疼的Connection Reset
背景: 要爬取某网站的数据,数据每页10条,有很多页(形式如同table表格).使用HttpClient 逐行逐页爬取数据,但在循环爬取多次时,总会在不确定的位置报错 在检查代码逻辑无果之后,开始疯狂 ...
- 用css动画写一个下红包雨的效果
红包雨的功能相信大家都做过,不过一般都是用js计算的,闲着无聊用css的样式写了类似的,主要用的是css的transform和animation结合.大概代码逻辑: @keyframes startH ...
- WinFrom饼形图
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...