Codeforces 396D
题意略。
思路:
很经典的逆序对计数问题。
https://blog.csdn.net/v5zsq/article/details/79006684
这篇博客讲得很好。
当循环到n的时候,我们需要特殊考虑,因为在循环内,它的贡献为0,所以我们在出循环的时候,还要特殊地加上一个值,也即整体的逆序对个数。
详见代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod = 1e9 + ;
const int maxn = 1e6 + ; int p[maxn],n;
LL fac[maxn],f[maxn],BIT[maxn]; void init(){
fac[] = fac[] = ;
for(LL i = ;i < maxn;++i){
fac[i] = i * fac[i - ] % mod;
LL C = i * (i - ) / % mod;
f[i] = C * C % mod * fac[i - ] % mod;
}
}
int lowbit(int k){
return k & -k;
}
void add(int pos,LL val){
while(pos <= n){
BIT[pos] += val;
pos += lowbit(pos);
}
}
LL sum(int pos){
LL ret = ;
while(pos > ){
ret += BIT[pos];
pos -= lowbit(pos);
}
return ret;
} int main(){
init();
while(scanf("%d",&n) == ){
memset(BIT,,sizeof(BIT));
for(int i = ;i <= n;++i) scanf("%d",&p[i]);
LL ans = ,s = ;
for(int i = ;i <= n;++i){
LL useful = p[i] - - sum(p[i]);
ans = (ans + s * useful % mod * fac[n - i] % mod) % mod;
ans = (ans + useful * f[n - i] % mod) % mod;
ans = (ans + useful * (useful - ) / % mod * fac[n - i] % mod) % mod;
s += useful;
s %= mod;
add(p[i],);
}
ans = (ans + s) % mod;
printf("%lld\n",ans);
}
return ;
}
Codeforces 396D的更多相关文章
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- CodeForces - 662A Gambling Nim
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
- CodeForces - 274B Zero Tree
http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...
- CodeForces - 261B Maxim and Restaurant
http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...
- CodeForces - 696B Puzzles
http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...
- CodeForces - 148D Bag of mice
http://codeforces.com/problemset/problem/148/D 题目大意: 原来袋子里有w只白鼠和b只黑鼠 龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老鼠谁就赢. 王妃每次 ...
随机推荐
- Linux卸载MySql——ubuntu版
卸载mysql 1)删除mysql的数据文件 sudo rm /var/lib/mysql/ -R 2)删除mqsql的配置文件 sudo rm /etc/mysql/ -R 3)自动卸载mysql的 ...
- 云计算:Linux运维核心管理命令详解
云计算:Linux运维核心管理命令详解 想做好运维工作,人先要学会勤快: 居安而思危,勤记而补拙,方可不断提高: 别人资料不论你用着再如何爽那也是别人的: 自己总结东西是你自身特有的一种思想与理念的展 ...
- spark 源码分析之三 -- LiveListenerBus介绍
LiveListenerBus 官方说明如下: Asynchronously passes SparkListenerEvents to registered SparkListeners. 即它的功 ...
- F#周报2019年第30期
新闻 Fantomas 3.0 宣告.NET Core 3.0预览版7 .NET Core 3.0预览版7中ASP.NET Core与Blazor的升级 Visual Studio 2019版本16. ...
- React入门理解demo
1.React文档结构 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- vuex的实现
源代码可以查看我的github: https://github.com/Jasonwang911/TryHardEveryDay/tree/master/Vuex/vuex-resouce 欢迎s ...
- 在 alpine 中使用 NPOI
在 alpine 中使用 NPOI Intro 在 .net 中常使用 NPOI 来做 Excel 的导入导出,NPOI 从 2.4.0 版本开始支持 .netstandard2.0,对于.net c ...
- python3 实现多域名批量访问特定目录(一)
渗透测试之批量处理同一框架CMS系统漏洞 当我们做多网站的渗透测试时,会发现很多站点采用的都是同类型的CMS框架,只要我们发现一个漏洞,那么我们可以批量处理这一类站点,高效测试,如果不知道该站点的框架 ...
- java高并发系列 - 第21天:java中的CAS操作,java并发的基石
这是java高并发系列第21篇文章. 本文主要内容 从网站计数器实现中一步步引出CAS操作 介绍java中的CAS及CAS可能存在的问题 悲观锁和乐观锁的一些介绍及数据库乐观锁的一个常见示例 使用ja ...
- 【Java例题】7.3 线程题3-素数线程
3.素数线程.设计一个线程子类,依次随机产生10000个随机整数(100-999):再设计另一个线程子类,依次对每一个随机整数判断是不是素数,是则显示:然后编写主类,在主函数中定义这两个线程类的线程对 ...