Comet OJ 夏季欢乐赛 H

分配学号

题目传送门

题目描述

今天,是JWJU给同学们分配学号的一天!为了让大家尽可能的得到自己想要的学号,鸡尾酒让大家先从 [1,10^{18}][1,1018] 中随机挑选一个数字作为自己的学号。但是总有一些心有灵犀的小伙伴们选择了一样的数字——显然这样是不合法的,因为每个人的学号都应该是唯一的。

于是鸡尾酒决定调整大家的学号。他采用如下两个原则来修改:

1、只增不减,每个人的最终学号 \ge≥ 每个人初始选择的学号

2、总修改量尽量少,总修改量指每一个人的改动量之和。(改动量即为最终学号减初始学号的值)

注意,修改后的最终学号可以大于10^{18}1018。

很显然,如果现在有两个同学 A 和 B,初始选择的学号均为1号,他们有可能被鸡尾酒改动成 A 同学为 11 号和 B 同学为 22 号,或者改动成 B 同学为 11 号和 A 同学为 22 号。

鸡尾酒邪魅一笑,他想让你告诉他,大家的最终学号共有多少种不同的分配方案。

输入描述

第一行包含一个正整数 nn,代表学生的数量。(1 \le n \le 10^{5})(1≤n≤105)

接下来一行包含 nn 个正整数,分别代表每个学生的初始选择的学号。(取值范围[1,10^{18}])[1,1018])

输出描述

输出一个整数表示最终学号的方案数。(答案对 10^{9}+7109+7 取模)

在两个最终学号的分配方案中,若存在某一个学生在两个方案中的学号不相同,则认为是这两个方案是不同的分配方案。

样例输入 1

3
1 1 2

样例输出 1

4

**样例输入 2 **

2
1 5

样例输出 2

1

提示

对于第一组样例,最终的学号分配方案有以下4种:

[1,2,3], [1,3,2], [2,1,3], [3,1,2][1,2,3],[1,3,2],[2,1,3],[3,1,2]

分配之后每个学生的学号均不相同,且这几种方案的总修改量都是最小的。

对于第二组样例,每个学生的学号已经都不相同,所以无需修改,所以最终分配方案只有11种,即[1,5][1,5]。

CODE:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5,mod=1e9+7;
ll a[N];
ll pos[N];
ll lst;
int n;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
{
if(lst>=a[i])
pos[i]=lst+1,lst++;
else
lst=a[i],pos[i]=a[i];
}
int ans=1;
for(int i=1;i<=n;i++)
ans=ans*(pos[i]-a[i]+1)%mod;
printf("%d\n",ans);
return 0;
}

Comet OJ 夏季欢乐赛 分配学号的更多相关文章

  1. Comet OJ 夏季欢乐赛 篮球校赛

    Comet OJ 夏季欢乐赛 篮球校赛 题目传送门 题目描述 JWJU注重培养学生的"唱,跳,rap,篮球"能力.于是每年JWJU都会举办篮球校赛,来给同学们一个切磋篮球技术的平台 ...

  2. Comet OJ 夏季欢乐赛 Gree的心房

    Comet OJ 夏季欢乐赛 Gree的心房 题目传送门 题目描述 据说每一个走进Gree哥哥心房的小姑娘都没有能够再走出来-- 我们将Gree哥哥的心房抽象成一个n \times mn×m的地图,初 ...

  3. Comet OJ CCPC-Wannafly & Comet OJ 夏季欢乐赛(2019)

    Preface 在一个月黑风高的夜晚我这个蒟蒻正踌躇着打什么比赛好 是继续做一场AGC,还是去刷一场CF 然后,一道金光闪过(滑稽),我们的红太阳bzt给我指明了方向: 你太菜了,我知道有一场很水的比 ...

  4. Comet OJ 夏季欢乐赛 烤面包片

    烤面包片 https://cometoj.com/contest/59/problem/C?problem_id=2698 题目描述 鸡尾酒最喜欢吃东北的烤面包片了.每次到东北地区的区域赛或者是秦皇岛 ...

  5. CCPC-Wannafly & Comet OJ 夏季欢乐赛(2019)H

    题面 被神葱安利安利了本题. 我们贪心的想,如果有那么一坨相等的学号,那么肯定是保留一个人学号不变,其余的再推到学号+1的位置(准备与那个位置的其他人合并)处理. 虽然a[i]可大至1e18,不过如果 ...

  6. Comet OJ 夏季欢乐赛 完全k叉树

    完全k叉树 https://cometoj.com/contest/59/problem/A?problem_id=2712 题目描述 欢迎报考JWJU!这里有丰富的社团活动,比如为梦想奋斗的ACM集 ...

  7. Comet OJ 夏季欢乐赛 距离产生美

    距离产生美 https://cometoj.com/contest/59/problem/B?problem_id=2680 题目描述 JWJU放暑假了,于是鸡尾酒就和女朋友璇璇一起出去玩.但是外面太 ...

  8. CCPC-Wannafly & Comet OJ 夏季欢乐赛(2019)D

    题面 一开始想到一个 O(N^2) 做法,先把x排序,然后顺次枚举x最大的点,看向前最多可以保留多少点 (也就是先不管正方形的上下长度限制,先考虑左右的限制).然后再对这些点做一遍类似的..(等等这么 ...

  9. CCPC-Wannafly & Comet OJ 夏季欢乐赛(2019)F

    题面 F比较友善(相较于E),我们发现如果i和j是满足条件的两个下标,那么: a[i]-2*b[i] + a[j]-2*b[j] >=0 或者 b[i]-2*a[i] + b[j]-2*a[j] ...

随机推荐

  1. 浅析容斥和DP综合运用

    浅析容斥和DP综合运用 前言 众所周知在数数题中有一种很重要的计数方法--容斥.但是容斥有一个很大的缺陷:枚举子集的复杂度过高.所以对于数据规模较大的情况会很乏力,那么我们就只能引入容斥DP. 复习一 ...

  2. Git系列四之在本地服务器搭建gitlab仓库管理(centeros环境下)

    1.Git仓库管理 现在本地已经创建了git仓库,又在gitlab上创建了一个git仓库,并且让这两个仓库进行远程同步,这样gitlab仓库既可以备份也可以与他人协作管理远程仓库以及根据需要推送或拉取 ...

  3. .NET MVC 序列化与反序列化

    using System.Runtime.Serialization.Json; using System.IO; using System.Text; //序列化        public str ...

  4. datatable转layui表格【偏原理】

    如题这个类负责把datatable转换为layui表格可以显示的内容.适合配合表格url字段的webapi服务端,为其返回响应字符串.代码如下:using System;using System.We ...

  5. windows10 edge浏览器关闭没有提示如何解决

    通常情况下,用户在win10 edge中打开多个窗口,点击关闭按钮就会出现“要关闭所有标签”提示,然后可以点击 取消来取消关闭edge.不过,最近一位windows10系统用户反馈自己在一次勾选“总是 ...

  6. 深入浅出JVM之垃圾收集算法

    判断哪些对象需要被回收 引用计数算法: 给对象中添加一个引用计数器,每当有一个地方引用时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器为0的对象就是不可能再被使用的. 但是JVM没有使 ...

  7. JDK10、JDK11、JDK12新特性

    JDK10新特性 1.var声明变量 很多人抱怨Java是一种强类型,需要引入大量的样板代码.甚至在这些情况下,给定好变量名,通常很清楚发生了什么,明显类型声明往往被认为是不必要的.许多流行的编程语言 ...

  8. python高级编程——入门语法(一)

    元类 在python中一切皆对象,类也是对象,只不过类是一个创建对象的对象,我们可以在类中动态的创建一个类,比如 def func(name): if name == "Plane" ...

  9. webpack报错

    webpack-dev-server --inline --progress --config build/webpack.dev.conf.js internal/modules/cjs/loade ...

  10. JavaScript 究竟是怎样执行的?

    摘要: 理解 JS 引擎运行原理. 作者:前端小智 原文:搞懂 JavaScript 引擎运行原理 Fundebug经授权转载,版权归原作者所有. 一些名词 JS 引擎 - 一个读取代码并运行的引擎, ...