[NOI Online 提高组]冒泡排序
题目
洛谷等许多 \(OJ\) 都有
思路
考试题,今日无意又做了一次
然后发现自己读错题了······
其实询问时只要 \(k\) 轮排序后的逆序对个数并不需要真的对序列进行更改
很显然 \(k\) 轮操作后每一个位置产生逆序对个数比 \(k\) 小的都没了,比 \(k\) 大的都减了 \(k\)
那么我们只要求每一个位置产生逆序对个数比 \(k\) 大的所有的和减去他们的个数乘 \(k\) 就好了
所以只要对交换时的两个数进行分类讨论,分别算下他们交换后对逆序对个数的影响就行了
开树状数组维护,一个记贡献的和,一个记个数(权值为下标)
\(Code\)
#include<cstdio>
#include<iostream>
#include<cstring>
#define LL long long
using namespace std;
const int N = 2e5 + 5;
int n , m , p[N] , num[N];
struct BIT{
LL c[N];
int lowbit(int x){return x & (-x);}
void add(int x , int v){for(; x <= n; x += lowbit(x)) c[x] += v;}
LL query(int x)
{
LL res = 0;
for(; x; x -= lowbit(x)) res += c[x];
return res;
}
}a , b;
int main()
{
scanf("%d%d" , &n , &m);
for(register int i = 1; i <= n; i++)
{
scanf("%d" , &p[i]);
num[i] = a.query(n) - a.query(p[i]);
a.add(p[i] , 1);
}
memset(a.c , 0 , sizeof a.c);
for(register int i = 1; i <= n; i++)
if (num[i] != 0) a.add(num[i] , num[i]) , b.add(num[i] , 1);
int t , k;
for(; m; m--)
{
scanf("%d%d" , &t , &k);
if (t == 1)
{
if (p[k] > p[k + 1])
{
if (num[k + 1] != 0) a.add(num[k + 1] , -num[k + 1]) , b.add(num[k + 1] , -1) , num[k + 1]--;
if (num[k + 1] != 0) a.add(num[k + 1] , num[k + 1]) , b.add(num[k + 1] , 1);
}
else{
if (num[k] != 0) a.add(num[k] , -num[k]) , b.add(num[k] , -1);
num[k]++ , a.add(num[k] , num[k]) , b.add(num[k] , 1);
}
swap(p[k] , p[k + 1]) , swap(num[k] , num[k + 1]);
}
else {
if (k >= n)
{
printf("0\n");
continue;
}
printf("%lld\n" , a.query(n) - a.query(k) - (b.query(n) - b.query(k)) * k);
}
}
}
[NOI Online 提高组]冒泡排序的更多相关文章
- NOI Online 提高组 题解
来补坑了-- 个人认为三道题难度差不多-- 还有要说一嘴,为啥我在其他网站代码都好好的,复制到 cnblogs 上 Tab 就成 8 空格了?不过也懒得改了. T1 序列 首先,遇到这种加一减一还带附 ...
- NOI ONLINE 提高组 序列 根据性质建图
题目链接 https://www.luogu.com.cn/problem/P6185 题意 应该不难懂,跳过 分析 说实话第一眼看到这题的时候我有点懵,真不知道怎么做,不过一看数据,还好还好,暴力能 ...
- luogu P6570 [NOI Online #3 提高组]优秀子序列 二进制 dp
LINK:P6570 [NOI Online #3 提高组]优秀子序列 Online 2的T3 容易很多 不过出于某种原因(时间不太够 浪了 导致我连暴力的正解都没写. 容易想到 f[i][j]表示前 ...
- [NOI Online 2021 提高组] 积木小赛
思路不说了. 想起来自己打比赛的时候,没睡好.随便写了个\(HASH\),模数开小一半分都没有. 然后学了\(SAM\),发现这个判重不就是个水题. \(SAM\)是字串tire的集合体. 随便\(d ...
- NOIP2018提高组初赛准备
NOIP2017提高组初赛错题 一.单项选择题(共15 题,每题1.5 分,共计22.5 分:每题有且仅有一个正确选项) 4. 2017年10月1日是星期日,1949年10月1日是( ). A. 星期 ...
- NOIP2018提高组初赛知识点
(传说,在神秘的初赛中,选手们经常互相爆零以示友好……) 历年真题:ti.luogu.com.cn 以下标题中打*的是我认为的重点内容 一.关于计算机 (一)计算机组成 硬件组成: 1. 控制器(C ...
- NOIP2018初赛总结(提高组)(试题+答案+简要解析)
NOIP2018初赛总结(提高组) 更新完毕(纯手敲),如果有错误请在下面留言 单选题 T1.下列四个不同进制的数中,与其它三项数值上不相等的是 A.\((269)_{16}\) B.\((617)_ ...
- noip2017爆炸记——题解&总结&反省(普及组+提高组)
相关链接: noip2018总结 noip2017是我见过的有史以来最坑爹的一场考试了. 今年北京市考点有一个是我们学校,我还恰好被分到了自己学校(还是自己天天上课的那个教室),于是我同时报了普及提高 ...
- 【题解】NOIP2016提高组 复赛
[题解]NOIP2016提高组 复赛 传送门: 玩具谜题 \(\text{[P1563]}\) 天天爱跑步 \(\text{[P1600]}\) 换教室 \(\text{[P1850]}\) 组合数问 ...
- JZOJ8月15日提高组反思——2020年暑假终结篇
JZOJ8月15日提高组反思--2020年暑假终结篇 T1 仙人掌最短路 抱歉我只会最短路 仙人掌是啥? 听说是缩点+\(LCA\) 最短路30 T2 直接暴力计算 正解\(DP\) \(amazin ...
随机推荐
- chrom jsonview的使用
在开发中,我们可能要为不同的系统提供接口,并以说明文档的形式提供接口说明,但我们提供的返回json往往会在页面上乱成一团. 这里我们推荐chrome浏览器的小插件jsonview,他不但有利于我们对接 ...
- .net core 中 WebApiClientCore的使用
WebApiClient 接口注册与选项 1 配置文件中配置HttpApiOptions选项 配置示例 "IUserApi": { "HttpHost": &q ...
- Django视图层/FBV与CBV/jsonResponse对象/form表单上传文件/request对象获取文件
目录 虚拟环境 视图层views 三板斧 jsonResponse对象 form如何上传文件/request对象获取文件 request对象方法 FBV与CBV CBV源码解析 虚拟环境 每创建一个虚 ...
- 【QT开发问题】使用自定义的QGroupBox,重写绘图事件paintEvent后边框消失的问题
问题描述 Qt界面开发过程中,使用自定义的QGroupBox,重写绘图事件paintEvent时,出现边框被覆盖的情况,或边框消失的问题. 左图是原始状态,直接重写绘图事件后,会变成右图空白状态. ...
- 开发一个MyBatis通用Mapper的轮子
一.前言 程序猿为什么如此执着于造轮子?MyBatis-Plus如此强大的工具流行这么多年了,我为啥还在重复造这样的轮子? 1.公司的技术规范不允许使用MyBatis-Plus,咱也不知道什么原因: ...
- week_8
Andrew Ng 机器学习笔记 ---By Orangestar Week_7_Unsupervised Learning While supervised learning algorithms ...
- 47.DRF实现分页
分页Pagination 当我们在PC 或者 App 有大量数据需要展示时,可以对数据进行分页展示.这时就用到了分页功能,分页使得数据更好的展示给用户 比如我们有1W+数据要返回给前端,数据量 ...
- Java求值策略
为什么说Java不存在引用传递? 在Java语言中,存在两种数据类型,一种是基本类型,如int.byte等8种基本类型,一种是引用类型,如String.Integer等.这两种数据类型区别就在于,基本 ...
- kafka详解(01) - 概述
kafka详解(01) - 概述 定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域. 消息队列 MQ传统应用场景之异步处理 使用消 ...
- Jasypt与Apollo一起使用造成Apollo热更新失效问题分析
背景 近日业务同学反映在Apollo界面更改配置后, 服务中对应变量的值却没有改变 相关配置key定义如下: @ApolloJsonValue("${apollo.config.map:{} ...