【SSLOJ 3347】动态逆序对

news/2024/11/16 14:25:33/文章来源:https://www.cnblogs.com/drlai/p/18549330

题目大意

给出一个长度为 \(n\) 的排列 \(a\)。每次交换两个数,求逆序对数对 \(2\) 取模的结果。

输入格式
第一行一个正整数\(n\)

第二行 \(n\)个数,表示给出的排列 \(a\)

第三行一个正整数\(q\)

接下来 \(q\)行,每行两个正整数 ,表示交换 \(a_i\)\(a_j\)

输出格式
输出共 \(q\)行,表示每次交换后逆序对数对 \(2\)取模的结果。
样例
【输入1样例】

4
1 2 3 4
2
1 2
1 2

【输出1样例】

1
0

【输入2样例】

8
4 1 5 2 6 8 7 3
10
6 4
7 8
2 2
1 1
7 7
1 7
3 3
2 4
2 6
5 7

【输出2样例】

0
1
1
1
1
0
0
1
0
1

对于\(100\%\)的数据,\(n,q\le100000\)

基本思路

首先我们肯定要求修改前的逆序对数,那就要用到树状数组。基本原理是先从大到小将所有数排好,再逐个按位置顺序装进树状数组里,每装进一个就统计它前面有几个数,因为先于它装进去肯定会比它大。但是我们要注意相同大小的数是不能计算逆序对的,所以对于相同的数还要按位置从大到小排

在此之前我们需要注意到题目只要我们给出奇偶性,那么事出反常必有因,这很可能是个结论题,大的方向就是哪些因素会影响逆序对数的奇偶性。

那么对于询问修改的如何统计呢?首先我们要明白若以交换的两个数之间为区间,那么此区间外的逆序对数是不会改变的,因为相对位置不变。

那么我们来考虑区间里面,首先对于两个交换的数肯定会对改变奇偶性产生 \(1\) 的贡献的,因为只要两个数不同交换就会产生加减 \(1\) 的改变。那么对于区间里面的数呢?比\(a_i\)\(a_j\)都大或都小肯定产生不了贡献。如果夹在它们两个中间呢?那么我们可以轻易得出贡献是加减 \(2\) ,对奇偶性没影响。最终得出结论:只要交换的两个数不相等那么就改变奇偶性。(但在实践上好像只需要位置不同就可以了)

核心代码

#include <bits/stdc++.h>
using namespace std;
#define num first#define pos secondtypedef long long ll;
typedef pair<int,int> pii;
const int N=1e5+10;
int n,a[N],q,sum[N];
ll ans;
pii cnt[N];
bool compare(pii nx,pii ny){if(nx.num==ny.num) return nx.pos>ny.pos;return nx.num>ny.num;
}
int query(int x){int ret=0;for(;x;x-=(x&(-x)))ret+=sum[x];return ret;
}
int add(int x){int ret=query(x-1);for(;x<=n;x+=(x&(-x)))sum[x]++;return ret;
}
int main(){freopen("lyk.in","r",stdin);freopen("lyk.out","w",stdout);ios::sync_with_stdio(false);cin>>n;for(int i=1;i<=n;i++){cin>>a[i];cnt[i].num=a[i];cnt[i].pos=i;}sort(cnt+1,cnt+1+n,compare);for(int i=1;i<=n;i++)ans+=add(cnt[i].pos);ans=ans&1;cin>>q;for(register int i=1,u,v;i<=q;i++){cin>>u>>v;if(a[u]!=a[v]) ans=!ans;cout<<ans<<endl;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/834612.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stoi函数介绍

stoi 是 C++ 标准库中的一个函数,定义在头文件 <string> 中,它用于将字符串转换为整数类型。 函数原型 int stoi(const std::string& str, size_t* idx = 0, int base = 10);str(必选):要转换的字符串,必须以数字开头(可以包含正负号)。 插一句题外话 如果不…

数据采集与融合技术-第四次实践作业

gitee链接:作业4 作业①: 要求: 熟练掌握 Selenium 查找HTML元素、爬取Ajax网页数据、等待HTML元素等内容。 使用Selenium框架+ MySQL数据库存储技术路线爬取“沪深A股”、“上证A股”、“深证A股”3个板块的股票数据信息。 候选网站:东方财富网:http://quote.eastmoney.co…

团队作业4——项目冲刺-第六篇

团队作业4——项目冲刺-第六篇这个作业属于哪个课程 <计科22级34班>这个作业要求在哪里 <作业要求>这个作业的目标 修改完善需求规格说明书、系统设计、Alpha任务分配计划、测试计划GitHub 链接 https://github.com/tangliweiwww/ChatGpt🍟一、团队 1.团队名称:…

20222306 2024-2025-1 《网络与系统攻防技术》实验五实验报告

1.实验内容 (1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式 该域名对应IP地址 IP地址注册人及联系方式 IP地址所在国家、城市和具体地理位置 PS:使用whois、dig、nslookup、traceroute、以及各类在线和离线工…

playwright ubuntu 出现 playwright._impl._errors.TimeoutError: Locator.click: Timeout 30000ms exceeded

win系统上正常, ubuntu报错 如下报错:解决Linux环境是英文browser.new_context(locale="zh-CN")本文来自博客园,作者:__username,转载请注明原文链接:https://www.cnblogs.com/code3/p/18549315

【ARM CoreLink 系列 1 -- SoC 架构 总线 互联(interconnect) 介绍】

概述 在 摩尔定律 的推动下,集成电路工艺取得了高速发展,单位面积上的晶体管数量不断增加。片上系统(System-on-Chip,SoC)具有集成度高、功耗低、成本低等优势,已经成为大规模集成电路系统设计的主流方向,解决了通信、图像、计算、消费电子等领域的众多挑战性的难题。随…

golang: 在线上用nginx部署应用

一,启动应用: 1,编译程序 $ go build 2,用nohup启动应用的二进制程序 $ nohup /data/goapp/industry/industry >> /data/logs/gologs/back.log 2>&1 & [1] 4896 3,检查应用是否启动: $ ss -lntp | grep 3000 LISTEN 0 4096 0.0.0.0:3000 …

go fiber:路由中间件

一,目录结构:二,代码 1,中间件代码 package middlewareimport ("fmt""github.com/gofiber/fiber/v2""industry/config" )// token校验 func CheckUser(c *fiber.Ctx) error {token:=c.Query("token")fmt.Println("token:"…

20222327 2024-2025-1 《网络与系统攻防技术》实验六实验报告

一、实验内容 学习掌握了Metasploit工具的使用,具体的操作总结来说就是Search-Use-Show-Set-Exploit/run 学习了利用相关漏洞进行模拟攻击的操作,对防范恶意攻击有了一些认识(安装杀软,不要点击陌生网站、文件链接等) 二、实验过程 1、前期渗透 ①主机发现(可用Aux中的ar…

快速量产低功耗 4G 定位方案?Air201 模组来搞定!

今天我们来了解的是Air201模组快速量产低功耗 4G 定位方案,希望大家有所收获。今天我们来了解的是Air201模组快速量产低功耗 4G 定位方案,希望大家有所收获。 寻寻觅觅低功耗4G定位方案? 一个Air201就够了! ——定位准、体积小、功耗低,助力行业客户快速量产! 01 Air201是…

如何挑选海外4G模组?这里有秘籍!

今天我会告诉大家如何挑选海外4G模组,我会把优势给贴出作为参考。去过国外的都知道国外4G网络各种状况实在让人无力吐槽,做海外设备的朋友,是时候了解一下Air780EEN/EEU/EEJ系列海外模组——集成vSIM功能,最大程度解决海外联网稳定性的问题。今天我会告诉大家如何挑选海外4…

无线基础配置

所需配置 AC1 [AC6605]vlan batch 10 20 100 [AC6605]interface GigabitEthernet 0/0/1 [AC6605-GigabitEthernet0/0/1]port link-type trunk[AC6605-GigabitEthernet0/0/1]port trunk allow-pass vlan 10 20 100 [AC6605]interface Vlanif 100 [AC6605-Vlanif100]ip address 1…