题目:[NOI Online #1 提高组] 冒泡排序

看到范围这么大,求逆序对,有修改,估计也只能树状数组了,考查冒泡排序性质,排第i次冒泡排序,总逆序对个数会减少i的逆序对个数,然后交换两个数,他们相对整个序列没有改变,也就是说,交换两个数,只可能是其中一个数逆序对个数+1或者-1,抓住这两点这个题就不难了。注意不开longlong见祖宗

代码:

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#define int long long
#define lowbit(x) x&-x
const int N=2e5+5;
using namespace std;
int n,m,a[N],b[N],cnt,t[N];
namespace fenwick
{
struct fw
{
int c;
}e[N];
void modify(int x,int v)
{
for(int i=x;i<=n;i+=lowbit(i))
e[i].c+=v;
}
int query(int x)
{
int ret=0;
for(int i=x;i;i-=lowbit(i))
ret+=e[i].c;
return ret;
}
}
using namespace fenwick;
signed main()
{
scanf("%lld %lld",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
b[i]=i-query(a[i])-1;
cnt+=b[i];
t[b[i]]++;
modify(a[i],1LL);
}
for(int i=1;i<=n;i++)
e[i].c=0;
modify(1,cnt);
cnt=0;
for(int i=0;i<n;i++)
{
cnt+=t[i];
modify(i+2,-(n-cnt));
}
while(m--)
{
int opt,i;
scanf("%lld %lld",&opt,&i);
i=min(i,n-1);
if(opt==1)
{
if(a[i]<a[i+1])
{
swap(b[i],b[i+1]);
modify(1,1LL);
modify(b[i+1]+2,-1LL);
b[i+1]++;
}
else
{
swap(b[i],b[i+1]);
modify(1,-1LL);
b[i]--;
modify(b[i]+2,1LL);
}
swap(a[i],a[i+1]);
}
else
printf("%lld\n",query(i+1));
}
return 0;
}

2022春每日一题:Day 35的更多相关文章

  1. 老男孩IT教育-每日一题汇总

    老男孩IT教育-每日一题汇总 第几天 第几周 日期 快速访问链接 第123天 第二十五周 2017年8月25日 出现Swap file….already exists以下错误如何解决? 第122天 2 ...

  2. PL/SQL Challenge 每日一题:2014-3-14 11gR2中带RELIES_ON子句的RESULT_CACHE函数

    PL/SQL Challenge 每日一题:2014-3-14 11gR2中带RELIES_ON子句的RESULT_CACHE函数 最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可 ...

  3. 【Java每日一题】20170106

    20170105问题解析请点击今日问题下方的"[Java每日一题]20170106"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  4. 【Java每日一题】20170105

    20170104问题解析请点击今日问题下方的"[Java每日一题]20170105"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  5. 【Java每日一题】20170104

    20170103问题解析请点击今日问题下方的"[Java每日一题]20170104"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  6. 【Java每日一题】20170103

    20161230问题解析请点击今日问题下方的"[Java每日一题]20170103"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  7. 【Java每日一题】20161230

    // 20161229问题解析请点击今日问题下方的"[Java每日一题]20161230"查看(问题解析在公众号首发,公众号ID:weknow619)package Dec2016 ...

  8. 【Java每日一题】20161229

    package Dec2016; import java.util.ArrayList; import java.util.List; public class Ques1229 { public s ...

  9. 【Java每日一题】20161228

    package Dec2016; import java.util.ArrayList; import java.util.List; public class Ques1228 { public s ...

  10. 【Java每日一题】20161227

    package Dec2016; public class Ques1227 { public static void main(String[] args){ } { c = 1; } int c ...

随机推荐

  1. Java---Stream进阶

    由于本文需要有一定的Stream基础,所以如果不懂什么是Stream的同学请移步:Java---Stream入门 操作分类 graph LR 操作分类 --- 中间操作 终端操作 --- 操作分类 中 ...

  2. Redis变慢?深入浅出Redis性能诊断系列文章(三)

    (本文首发于"数据库架构师"公号,订阅"数据库架构师"公号,一起学习数据库技术,助力职业发展) 本篇为Redis性能问题诊断系列的第三篇,主要从Redis服务层 ...

  3. TDengine概述以及架构模型

    TDengine TDengine是一个高效的存储.查询.分析时序大数据的平台,专为物联网.车联网.工业互联网.运维监测等优化而设计. 您可以像使用关系型数据库MySQL一样来使用它. TDengin ...

  4. 【疑难杂症】关于pytorch安装的一些问题

    问题一:选用哪个版本 直接下载Anaconda,会自动给你附加最合适的python版本,再去pytorch官网直接找到自己需要的版本下载 问题二:下载pytorch速度太慢 直接把下载代码最后面的-c ...

  5. Beats:使用Elastic Stack对Redis监控

  6. 第五章:Admin管理后台

    Django奉行Python的内置电池哲学.它自带了一系列在Web开发中用于解决常见问题或需求的额外的.可选工具.这些工具和插件,例如django.contrib.redirects都必须在setti ...

  7. 授予用户/用户组访问 Kubernetes 的一个名称空间

    转载地址:https://www.kuboard.cn/learning/k8s-advanced/sec/rbac/auth-namespace.html 前提条件 已安装 Kuboard v3,版 ...

  8. Keepalived + Nginx 实现高可用 Web 负载均衡

    一.Keepalived 简要介绍 Keepalived 是一种高性能的服务器高可用或热备解决方案, Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前 ...

  9. ERP系统都能给企业带来什么好处?

    ERP系统但如果用得好,自然可以提高企业内部资源的计划和控制能力,提质增效降成本,提升企业竞争力,加速数字化转型步伐,但不是所有的企业使用ERP都能带来好处的,尤其是对于一些小微企业,带来的可能是灾难 ...

  10. 为什么同行业,同个软件,有些 ERP 成功,有的失败了?

    企业的差异性是各类系统部署必须正视的关键问题!同行业,同个软件,有些 ERP 成功,有的失败,基本上是企业差异性没有得到重视的,所以一点也不应该感到奇怪.规模不同.行业不同.发展阶段不同.生产模式不同 ...