题目链接————

题意大致是给你一个数列,然后给你一个k,表示一串数字有k个这样的数列组成,问一串数的逆序数是多少?

eg:

2 2
2 1

In this case, B = 2, 1, 2, 1        逆序数为 3

思路:

这题k的范围为1e9

所以肯定要找规律。

拿 132132132 来说,它是由3个132组成,所以先求出132的逆序数,假设为num1,他有3个,所以3*num1。然后该计算不同132的逆序数了。

先求出 在132中,每一个数字有多少个比它小了,然后在加和。假设为num2。

对于132 132 132而言,第二个132序列中有num2个比第一个132序列小的数,第三个132序列有num2个比第一个132序列小的数,第3个132序列有num2个b比第2个132序列小的数。

所以推广到一般 ,

最后的逆序数 =  num1 * k +  num2*(k-1 + k-2 + k-3 +..........+ 1)

= num1 *  k + num2 * (k-1)*k/2

由于k的范围比较大,所以用快速乘算乘法就可以了。

AC Code:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 1e6;
LL n,m;
LL res[10052];
LL fast_mul(LL a,LL b,LL Mod)
{LL c = a*b -  (LL)((long double)a*b/Mod + 0.5)*Mod;return c<0? c+Mod : c;
}
LL M = (LL)1e9 + 7;
int main()
{
#ifndef ONLINE_JUDGE// freopen("input.txt","r",stdin);// freopen("output.out","w",stdout);
#endif // ONLINE_JUDGEcin>>n>>m;for(int i = 1; i<=n; ++i){cin>>res[i];}LL num1= 0,num2 =0;for(int i = 1; i<n; ++i){for(int j = i+1; j<=n; ++j){if(res[i]>res[j])num1 ++;}}sort(res+1,res+n+1,greater<LL>());for(int i = 1; i<n; ++i){for(int j = i+1; j<=n; ++j){if(res[i]>res[j])num2++;}}LL K = m,P = m;if(K%2==0)K = m/2,P = m-1;elseK = m,P = (m-1)/2;cout<<(fast_mul(num1,m,M)%M + fast_mul(K,P,M)*num2%M )%M<<endl;}

Japanese Student Championship 2019 Qualification B - Kleene Inversion(规律 + 快速乘)相关推荐

  1. 【AtCoder】Japanese Student Championship 2019 Qualification题解

    Japanese Student Championship 2019 Qualification题解 A. Takahashi Calendar ◇题目传送门◆ 题目大意 定义Product Day为 ...

  2. Japanese Student Championship 2021 D - Nowhere P(递推 + 快速幂)

    传送门 这题很明显存在一个递推关系,思考了一下果然如此. 设dp[i][j]为前i项的和膜p为j的方案数,显然dp[i+1][j] = sum(dp[i][k]), (k + j != p), 那么问 ...

  3. Visual Studio 2019/2017 安装使用教程(快速上手版)

    Visual Studio 2017 安装使用教程(详细) 在此鸣谢范华对本文工作的大力支持 一.下载 二.安装 2017版本新建项目过程 2019版本新建项目过程 新建源文件 然后你就可以简单编写一 ...

  4. [蓝桥杯2019初赛]矩形切割-找规律

    代码如下: #include <iostream> using namespace std;int main() {int a, b;int ans = 1;cin >> a ...

  5. Benelux Algorithm Programming Contest 2019 G. Gluttonous Goop 思维规律题

    我们模拟后发现: 当病菌都连在一起时: 形成一个多边形,我们把他填补可以得到一个最小矩形. 把这个多边形它感染一次后:又得到一个多边形,把新的多边形填补得到新的矩形,发现:两个矩形内的未被感染的数量都 ...

  6. (C++题目)定义一个描述学生基本情况的类Student,数据成员包括姓名、学号、英语成绩和高数成绩;成员函数包括构造函数、析构函数、获取姓名、获取学号、求出平均成绩,以及显示各

    定义一个描述学生基本情况的类Student,数据成员包括姓名.学号.英语成绩和高数成绩:成员函数包括构造函数.析构函数.获取姓名.获取学号.求出平均成绩,以及显示各科成绩和平均成绩的显示函数.编写ma ...

  7. Microsoft office 家庭学生版(Home Student)下载地址

    记录Microsoft office 家庭学生版下载地址 Hi!这是一篇资源下载记录呀! 之前一直觉着office专业版应该最好吧,然后每次安装都整了个全家桶--直到我发现,家庭学生版只安装Word. ...

  8. 2019年最新最全运维技能图谱

    作者:南非蚂蚁 来源:https://blog.51cto.com/ixdba 运维是一个融合多学科(网络.系统.开发.安全.应用架构.存储等)的综合性技术岗位,从最初的网络管理(网管)发展到现在的系 ...

  9. 2019运维技能风向标

    运维是一个融合多学科(网络.系统.开发.安全.应用架构.存储等)的综合性技术岗位.从最初的网络管理(网管)发展到现在的系统运维工程师.网络运维工程师.安全运维工程师.运维开发工程师等,可以看出,运维的 ...

  10. 【今日CS 视觉论文速览】1 Jan 2019

    今日CS.CV计算机视觉论文速览 Tue, 1 Jan 2019 Totally 52 papers Interesting: 图片快速视觉效果增强算法,基于Ignatov的算法提高图像的感知质量,利 ...

最新文章

  1. Parser Generator Tips翻译(中英对译) by Joshua Xu
  2. HighCharts基本使用
  3. 数据挖掘原理与算法:练习题2
  4. Python matplotlib高级绘图详解
  5. EXCEL数字前补零且转换成文本型
  6. Java动态代理的应用
  7. 为什么我的论文没人引用?
  8. wms地图绘制工具_移情地图,了解用户需求的利器
  9. Chromium Microsoft Edge 浏览器现已可供下载
  10. 以太坊geth区块链私链建立
  11. LeetCode57 Insert Interval
  12. cookie代码加时间多久出现一次_一文彻底搞懂Cookie、Session、Token到底是什么
  13. 华为机试——整理数字字符串
  14. jar httpclient 少包,此处 区别 common-http包
  15. echo, print, printf 和 sprintf 区别(PHP)
  16. 折腾手机与平板的心得体会
  17. 如何批量导出QQ空间相册到电脑中
  18. URP——后期处理特效——通道混合器Channel Mixer
  19. 通过虚拟机搭建个人NAS
  20. 「YGG Japan」宣布已完成约 295 万美元的新股权私募

热门文章

  1. 京东-黑客马拉松大赛复盘
  2. 蓝牙防丢器原理和作用
  3. 解读 | 关于阿里巴巴架构大调整,有 7 个重点值得特别关注
  4. 技嘉主板设置服务器启动不了系统,技嘉主板开启ahci模式不认硬盘 - 卡饭网
  5. 这次跟大家聊聊技术,也聊聊人生
  6. unity android gyro,Unity - 陀螺仪 - 仅绕一轴旋转
  7. 国企程序员可以干多久
  8. Excel两列数据对比,找出重复数据
  9. matlab 10为底指数,matlab指数函数
  10. 手把手教你十分钟学会使用小程序云存储