牛客月赛60 F.被抓住的小竹(数学&推式子)

考虑枚举每个区间的贡献。

每个区间内所有的数都作为 x x x一次时的贡献和。

因为要求区间内 ≥ x \ge x ≥x数个数, 那么区间内的数从小到大排序后,显然最大的数贡献是1、第二大的数贡献是2,依此内推。

因此对于长度为 l e n len len的贡献是 ∑ i = 1 l e n i = l e n ( l e n + 1 ) 2 \sum_{i=1}^{len}i=\dfrac{len(len+1)}{2} ∑i=1len​i=2len(len+1)​

因此我们可以枚举区间长度。

区间长度为 i i i的个数为 n − i + 1 n-i+1 n−i+1。

所以总贡献是: ∑ i = 1 n ( n − i + 1 ) × i ( i + 1 ) 2 \sum\limits_{i=1}^n(n-i+1)\times \dfrac{i(i+1)}{2} i=1∑n​(n−i+1)×2i(i+1)​然后展开化简一波。

a n s = n ( n + 1 ) ( n + 2 ) ( n + 3 ) 24 ans=\dfrac{n(n+1)(n+2)(n+3)}{24} ans=24n(n+1)(n+2)(n+3)​

是一个组合数的形式: a n s = C n + 3 4 ans=C_{n+3}^4 ans=Cn+34​与排列无关。

因此可以提出来,然后 r e s = a n s × ∑ p i n v ( p ) res=ans\times\sum_pinv(p) res=ans×∑p​inv(p)

求所有排列的逆序对和,可以这样考虑。

一共有 n ! n! n!个排列,对于一个两个数 i , j ( i < j ) i,j(i<j) i,j(i<j) 他们的贡献是对称的,也就是说有一半的 p o s i < p o s j pos_i<pos_j posi​<posj​,另一半是 p o s i > p o s j pos_i>pos_j posi​>posj​。因此贡献是 n ! 2 \dfrac{n!}{2} 2n!​。

所有有序对总数是 n ( n − 1 ) 2 \dfrac{n(n-1)}{2} 2n(n−1)​

所以答案就是: C n + 3 4 n ! n ( n − 1 ) 4 = n 2 × ( n + 3 ) ! × ( n − 1 ) 96 C_{n+3}^4\dfrac{n!n(n-1)}{4}=\dfrac{n^2\times (n+3)!\times(n-1)}{96} Cn+34​4n!n(n−1)​=96n2×(n+3)!×(n−1)​

#include<bits/stdc++.h>
using namespace std;
int mod=1e9+7;
long long power(long long a,long long b){long long res=1;while(b){if(b&1)res=res*a%mod;b>>=1;a=a*a%mod;}return res;
}
long long inv(int x){return power(x,mod-2);
}
long long jc[2020200];
int main(){jc[0]=1;int n,i,j,k;for(i=1;i<=1e5+10;i++)jc[i]=jc[i-1]*i%mod;cin>>k;while(k--){long long x;cin>>x;cout<<x*x%mod*(x-1)%mod*jc[x+3]%mod*inv(96)%mod<<'\n';}
}

牛客月赛60 F.被抓住的小竹(数学推式子)相关推荐

  1. 牛客小白赛60(F.被抓住的小竹)61(E.排队)(数学+推公式)

    文章目录 前言 逆序对是典型题,常用统计数组内逆序对用树状数组.但是求排列中的总逆序对数量需要利用组合数学推导公式. F.被抓住的小竹 E.排队 总结 前言 逆序对是典型题,常用统计数组内逆序对用树状 ...

  2. 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  3. 牛客练习赛29: F. 算式子

    链接:https://www.nowcoder.com/acm/contest/211/F 来源:牛客网 题目描述 给定  个整数  .保证  . 对于每个  ,求出 .为了避免过量输出,你只需要将所 ...

  4. 牛客练习赛50 F tokitsukaze and Another Protoss and Zerg(分治NTT)

    一些废话: 写完上一题(分治FFT)之后记起之前牛客写的这道题,题解是用启发式NTT,每次选两个项数最小的合并,当时没有整理NTT的模板所以就先mark了,今天受到分治FFT的启发,想用分治NTT来解 ...

  5. 牛客练习赛60 C—操作集锦

    整理的算法模板:ACM算法模板总结(分类详细版) 链接:https://ac.nowcoder.com/acm/contest/4853/C 来源:牛客网 题目描述 有一款自走棋有26种操作,每种操作 ...

  6. 牛客练习赛 43 F Tachibana Kanade Loves Game 容斥原理(Java版ac)

    链接:https://ac.nowcoder.com/acm/contest/548/F 来源:牛客网 题目描述 立华奏是一个天天打比赛的萌新. 省选将至,萌新立华奏深知自己没有希望进入省队,因此开始 ...

  7. 牛客练习赛63 F 牛牛的树行棋 (SG函数+树差分)

    链接:https://ac.nowcoder.com/acm/contest/5531/F 来源:牛客网 牛牛的树行棋 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K, ...

  8. 山楂(牛客月赛45 )

    山楂 链接:https://ac.nowcoder.com/acm/contest/11222/C 来源:牛客网 众所周知,清楚姐姐最近迷上了一个老年游戏"山楂串"(点进去可以玩) ...

  9. [ZJOI2014] 星系调查(树上差分 + 数学推式子)

    problem luogu-P3340 题面写得那么长,其实说白了就是求一条直线,使得若干个点到这条直线的距离平方的和最小,求这个最小值. solution 我超爱数学,数学就是我的命,我一天不学数学 ...

最新文章

  1. zabbix 源码编译安装
  2. 用c语言输出26个英文字母,菜鸟求助,写一个随机输出26个英文字母的程序
  3. 深刻感知运营之“痛”,我们推出了新产品——神策智能运营
  4. 【Auto.js】使用Pro 8.0 API优化图色或无障碍的耗电问题
  5. LeetCode 234. 回文链表(快慢指针+链表反转)
  6. 设计图书馆oracle触发器,Oracle触发器开发与设计
  7. MySQL 半同步复制+MMM架构
  8. poj 1160 dp
  9. eclipse.ini配置eclipse的启动参数
  10. Webframe x-scroll
  11. 【重点】程序员面试金典——4.6寻找下一个结点
  12. bex5 php,Bex5开发技巧之如何在列表中显示主键字段
  13. 有源滤波器: 基于UAF42的50Hz陷波器设计
  14. 一些游戏用到的渲染技术
  15. vscode 路径宏_VSCode宏怎么设置?VSCode宏的添加方法!
  16. 2022你不容错过的软件测试项目实战(APP项目实战)免费版
  17. AccessKey泄露利用
  18. 告别“停车难”,条形智能停车场导视牌推动城市智能停车建设
  19. 使用小程序制作一个飞机大战小游戏
  20. uint与int区别

热门文章

  1. 阿拉伯数字转换成英文以及中文表达
  2. mysql数据库添加图书信息_大项目之网上书城(八)——数据库大改添加图书
  3. bulter机器人_九款最牛的物流机器人:中国曹操亮了
  4. Distance Tree 全网最丑做法
  5. 从摆摊开始,发展成坐拥十多家分店的企业家,看他如何蜕变的
  6. Xcode如何添加字体库--
  7. 榆林的经纪人偷偷告诉你windowsphone8应用
  8. PHP项目部署步骤及存在的问题
  9. 校运动会c语言程序编写,C语言课程设计 校际运动会管理系统.pdf
  10. 智能操控装置ASD在北京大兴机场高压开关柜的应用