题目

洛谷等许多 \(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 提高组]冒泡排序的更多相关文章

  1. NOI Online 提高组 题解

    来补坑了-- 个人认为三道题难度差不多-- 还有要说一嘴,为啥我在其他网站代码都好好的,复制到 cnblogs 上 Tab 就成 8 空格了?不过也懒得改了. T1 序列 首先,遇到这种加一减一还带附 ...

  2. NOI ONLINE 提高组 序列 根据性质建图

    题目链接 https://www.luogu.com.cn/problem/P6185 题意 应该不难懂,跳过 分析 说实话第一眼看到这题的时候我有点懵,真不知道怎么做,不过一看数据,还好还好,暴力能 ...

  3. luogu P6570 [NOI Online #3 提高组]优秀子序列 二进制 dp

    LINK:P6570 [NOI Online #3 提高组]优秀子序列 Online 2的T3 容易很多 不过出于某种原因(时间不太够 浪了 导致我连暴力的正解都没写. 容易想到 f[i][j]表示前 ...

  4. [NOI Online 2021 提高组] 积木小赛

    思路不说了. 想起来自己打比赛的时候,没睡好.随便写了个\(HASH\),模数开小一半分都没有. 然后学了\(SAM\),发现这个判重不就是个水题. \(SAM\)是字串tire的集合体. 随便\(d ...

  5. NOIP2018提高组初赛准备

    NOIP2017提高组初赛错题 一.单项选择题(共15 题,每题1.5 分,共计22.5 分:每题有且仅有一个正确选项) 4. 2017年10月1日是星期日,1949年10月1日是( ). A. 星期 ...

  6. NOIP2018提高组初赛知识点

     (传说,在神秘的初赛中,选手们经常互相爆零以示友好……) 历年真题:ti.luogu.com.cn 以下标题中打*的是我认为的重点内容 一.关于计算机 (一)计算机组成 硬件组成: 1. 控制器(C ...

  7. NOIP2018初赛总结(提高组)(试题+答案+简要解析)

    NOIP2018初赛总结(提高组) 更新完毕(纯手敲),如果有错误请在下面留言 单选题 T1.下列四个不同进制的数中,与其它三项数值上不相等的是 A.\((269)_{16}\) B.\((617)_ ...

  8. noip2017爆炸记——题解&总结&反省(普及组+提高组)

    相关链接: noip2018总结 noip2017是我见过的有史以来最坑爹的一场考试了. 今年北京市考点有一个是我们学校,我还恰好被分到了自己学校(还是自己天天上课的那个教室),于是我同时报了普及提高 ...

  9. 【题解】NOIP2016提高组 复赛

    [题解]NOIP2016提高组 复赛 传送门: 玩具谜题 \(\text{[P1563]}\) 天天爱跑步 \(\text{[P1600]}\) 换教室 \(\text{[P1850]}\) 组合数问 ...

  10. JZOJ8月15日提高组反思——2020年暑假终结篇

    JZOJ8月15日提高组反思--2020年暑假终结篇 T1 仙人掌最短路 抱歉我只会最短路 仙人掌是啥? 听说是缩点+\(LCA\) 最短路30 T2 直接暴力计算 正解\(DP\) \(amazin ...

随机推荐

  1. 在 win11 下搭建并使用 ubuntu 子系统(同时测试 win10)——(附带深度学习环境搭建)

    对于一个深度学习从事者来说,Windows训练模型有着诸多不便,还好现在Windows的Ubuntu子系统逐渐完善,近期由于工作需求,配置了Windows的工作站,为了方便起见,搭建了Ubuntu子系 ...

  2. Iris_data_analysis

    SVM调用实例--鸢尾花 任务描述: 构建一个模型,根据鸢尾花的花萼和花瓣大小将其分为三种不同的品种. 数据集: 每一行数据由4个特征值及1个目标值组成,4个特征值分别为:萼片长度.萼片宽度.花瓣长度 ...

  3. cesium加载倾斜摄影,添加billboard并注册点击事件

    完整示例代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  4. 《HTTP权威指南》– 2.HTTP报文与URL资源

    URL与资源: 大多数URL方案的URL语法都建立在这个由9部分构成的通用格式上. 方案: 访问服务器以获取资源要使用哪种协议 用户: 某些方案访问资源时需要的用户名 密码: 用户名后面可能包含的密码 ...

  5. 手把手教你一套完善且高效的k8s离线部署方案

    作者:郝建伟 背景 面对更多项目现场交付,偶而会遇到客户环境不具备公网条件,完全内网部署,这就需要有一套完善且高效的离线部署方案. 系统资源 编号 主机名称 IP 资源类型 CPU 内存 磁盘 01 ...

  6. js 中常用函数汇总(含示例)

    〇.前言 js 在日常开发中还是比较常用的,本文将常用的 js 方法简单汇总一下,希望对你我有一点帮助. 一.重复 / 延迟操作 1.设置固定时间间隔,重复执行(setInterval(funcRef ...

  7. python从公众号文章中获取二维码

    在做一个公众号采集的项目中,客户有个要求,想把二维码的url保存到数据库中,如图. 原本以为要各种骚操作各种逆向才能获取得到,没想到竟然很简单. 第一步 观察二维码url的规范 https://mp. ...

  8. 分享一个自己项目中用到的.net中正则替换工具处理类(支持先用特征匹配内容整体模板,同时模板内对相关字内容进行替换)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. 论文解读(CAN)《Contrastive Adaptation Network for Unsupervised Domain Adaptation》

    论文信息 论文标题:Contrastive Adaptation Network for Unsupervised Domain Adaptation论文作者:Guoliang Kang, Lu Ji ...

  10. vulnhub靶场之HACKER KID: 1.0.1

    准备: 攻击机:虚拟机kali.本机win10. 靶机:Hacker kid: 1.0.1,下载地址:https://download.vulnhub.com/hackerkid/Hacker_Kid ...