2025/10/20~2025/?/? 做题笔记 - sb

news/2025/10/20 22:53:33/文章来源:https://www.cnblogs.com/SuperSupper/p/19153856

2025/10/20

AT_arc181_d Prefix Bubble Sort

很显然的有每一次交换都会恰好减少一个逆序对,于是题目转化为每次会产生多少次交换。

那么考虑如何统计交换次数

  • 发现当前缀 max 变化时不会产生答案,但是这个折线非常困难维护,不考虑这种做法
  • 考虑每个数往后交换多少次是难的,那么考虑有多少个数会往前交换。可以发现当前面有数大于这个数时,这个数一定会产生一次交换,那么直接统计有多少个数前面有大于它的数即可。由于题目限制了 \(A_i\) 单调不减,直接线段树简单维护即可

没有想到可以换一种贡献方式,老是在一棵树上吊死。

Code

#include <iostream>using namespace std;
using ll = long long;const int kN = 2e5 + 1;int n, m, a[kN];
ll ans;
struct BIT {int tr[kN];void Update(int x, int k) {for (; x < kN; x += x & -x)tr[x] += k;}int Query(int x) {int res = 0;for (; x; x -= x & -x)res += tr[x];return res;}
} Bit;
struct Point {int mn, cnt, tag;
} tr[kN << 2];void Func(int x, int k) {tr[x].mn += k, tr[x].tag += k;
}
void Pushdown(int x) {Func(x * 2, tr[x].tag), Func(x * 2 + 1, tr[x].tag), tr[x].tag = 0;
}
void Find(int x, int l, int r) {if (tr[x].mn > 0)return;if (l == r)return tr[x].mn = tr[x].tag = 1e9, tr[x].cnt = 0, void();Pushdown(x);int m = (l + r) / 2;Find(x * 2, l, m), Find(x * 2 + 1, m + 1, r);tr[x].mn = min(tr[x * 2].mn, tr[x * 2 + 1].mn), tr[x].cnt = tr[x * 2].cnt + tr[x * 2 + 1].cnt;
}
void Update(int nl, int nr, int x = 1, int l = 1, int r = n) {if (nl <= l && r <= nr)return Func(x, -1), Find(x, l, r);Pushdown(x);int m = (l + r) / 2;if (nl <= m)Update(nl, nr, x * 2, l, m);if (nr > m)Update(nl, nr, x * 2 + 1, m + 1, r);tr[x].mn = min(tr[x * 2].mn, tr[x * 2 + 1].mn), tr[x].cnt = tr[x * 2].cnt + tr[x * 2 + 1].cnt;
}
void Build(int x = 1, int l = 1, int r = n) {if (l == r)return tr[x].cnt = a[l] > 0, tr[x].mn = a[l] ? a[l] : 1e9, void();int m = (l + r) / 2;Build(x * 2, l, m), Build(x * 2 + 1, m + 1, r);tr[x].mn = min(tr[x * 2].mn, tr[x * 2 + 1].mn), tr[x].cnt = tr[x * 2].cnt + tr[x * 2 + 1].cnt;
}
int Query(int nl, int nr, int x = 1, int l = 1, int r = n) {if (nl <= l && r <= nr)return tr[x].cnt;Pushdown(x);int m = (l + r) / 2, res = 0;if (nl <= m)res = Query(nl, nr, x * 2, l, m);if (nr > m)res += Query(nl, nr, x * 2 + 1, m + 1, r);return res;
}int main() {
#ifndef ONLINE_JUDGEfreopen("in", "r", stdin);freopen("out", "w", stdout);
#endifcin.tie(0)->sync_with_stdio(0);cin >> n;for (int i = 1, x; i <= n; i++) {cin >> x;a[i] = Bit.Query(n - x + 1), Bit.Update(n - x + 1, 1), ans += a[i];}Build();cin >> m;for (int i = 1, x; i <= m; i++) {cin >> x;ans -= Query(1, x), Update(1, x);cout << ans << '\n';}return 0;
}

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

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

相关文章

10-20 Extra-Problem 总结

10-20 Extra-Problem 总结 AtCoder abc280_g 发现点 \((x,y)\) 的距离实际上是 \(\max(|x|,|y|,|x-y|)\)。由于坐标是可平移的,所以 \((x_1,y_1),(x_2,y_2)\) 的距离为 \(\max(|x_1-x_2|,|y_1-y_2|,|(x_1-x_2)-(y_1-y…

Rust 编译加速的最佳实践

Rust 编译慢是“老毛病”,但 2024-2025 年官方和社区集中发力,已经把“等 10 min”级别的大型项目干到了“秒级增量”。下面把当前(2025-10)验证有效的加速手段按“投入-收益”从高到低排序,全部可立刻落地;最后…

ansible底层文件传输机制中默认模式遇到权限拒绝后启用管道模式可以得到解决

为啥我在ansible.cf中加入这一配置后就可以ping通了 [ssh_connection] pipelining = True[student@master ansible]$ ansible all -m ping [WARNING]: sftp transfer mechanism failed on [node2]. Use ANSIBLE_DEBUG…

20232304 2025-2026-1 《网络与系统攻防技术》实验三实验报告

20232304 2025-2026-1 《网络与系统攻防技术》实验三实验报告 1.实验内容 1.1 实验内容 (1)使用msf编码器以及多种格式Payload生成,veil的evasion功能,利用C+Shellcode编程等技巧 (2)通过组合应用各种技术实现恶意代…

10月20日记

1.今天学习java 2.明天学习工程技艺 3.递归的终止条件怎么确定?会不会栈溢出?

笔记本 光驱 的内部结构及用法: 应急强大的系统启动 (恢复) 光盘 (DVD+R/RW)

笔记本 光驱 的内部结构及用法: 应急强大的系统启动 (恢复) 光盘 (DVD+R/RW)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fami…

20251020周一日记

20251020周一日记为什么上周五没写日记?因为在集中办公耶! 周五: 1.早上开项目启动大会,一群老总来,有点像誓师大会。开始干活,第一天还没啥人吃零食。 2.下午上课,本来说是要汇报?结果老师微笑着走了忘了这事…

WPF loading data asynchronously and contextmenu save as json in mvvm

Install-Package Prism.Wpf; Install-Package Prism.DryIOC; Install-Package System.Text.Json;<prism:PrismApplication x:Class="WpfApp36.App"xmlns="http://schemas.microsoft.com/winfx/2006/…

Android 源码解析系列1- Android init 进程启动流程

Android 源码解析系列1- Android init 进程启动流程Android 源码解析系列1- Android init 进程启动流程 init进程是用户空间的第一个进程.如下 g1930fua_g210_ai:/ $ ps -ef | grep init #uid pid ppid C…

英语_阅读_Start school_待读

When children start school for the first time, parents often feel a sense of excitement coupled with a touch of sadness at the end of an era. This is the start of a new adventure for children playing a…

2025.10.20总结

今天继续学软考相关内容,目前过完操作系统剩下的相关知识 上午上课的时候进行项目演示有很多的收获,与它们的项目相比我目前的开发而言还存在很多的不足 操作系统作为系统资源的管理者,当然也需要对内存进行管理,要…

10.20总结

class Mammal{} class Dog extends Mammal {} class Cat extends Mammal{} public class TestCast { public static void main(String args[]) { Mammal m; Dog d=new Dog(); Cat c=new Cat(); m=d; //d=m; d=(Dog)m; …

学习相关

博客园主题设置 参考 一个是这个博主的,设置的比较精美:https://www.cnblogs.com/huxingxin/p/16886323.html 还有就是这个博主:https://www.cnblogs.com/zhaohongbing/p/16332606.html 其实自己也想照着这个博主的…

题解:Luogu P2075 区间 LIS

题意 给定长度为 \(n\) 的排列 \(p\),\(q\) 次询问 \(l,r\),求 \(p[l,r]\) 的 LIS 长度。\(1\leq n,q\leq 10^5\)。 题解 挺牛的题。 考虑如何刻画 LIS。感觉上 DP 没有什么前途,考虑另一种经典的 \(\mathcal{O}(n\…

英语_阅读_2050 Space tourism_待读

It is 2050. Space tourism has become a reality. 现在是2050年。太空旅游已经成为现实。 So would you want to be a space tourist? 那么你想成为一名太空游客吗? Here, some middle school students share their…

题解:Luogu P10644 [NordicOI 2022] 能源网格 Power Grid

题意 给定 \(n,m\)。对于 \(n\times m\) 的网格 \(a\),定义 \[c_{i,j}=\left\lvert \sum_{k=1}^{n}a_{k,j}-\sum_{k=1}^{m}a_{i,k} \right\rvert \]现在给定 \(c\),构造一组合法的 \(a\)。数据保证有解。\(1\leq n,m…

题解:Luogu P10004 [集训队互测 2023] Permutation Counting 2

题意 给定 \(n\),对于所有 \(0\leq x,y<n\) 求有多少长度为 \(n\) 的排列 \(p\) 满足 \(\sum\limits_{i=1}^{n-1}[p_i<p_{i+1}]=x\) 且 \(\sum\limits_{i=1}^{n-1}[p^{-1}_i<p^{-1}_{i+1}]=y\),答案对给定的…

题解:Luogu P4143 采集矿石

题意 给定长度为 \(n\) 的字符串 \(s\) 和权值序列 \(v\)。求所有子串 \(s[l,r]\) 使得 \(s[l,r]\) 在所有子串去重后的字典序降序排名,恰好等于 \(v[l,r]\) 的区间和。\(1\leq n\leq 10^5\)。 题解 注意到固定左端点…

从18w到1600w播放量,我的一点思考。

你好呀,我是歪歪。 前几天我想要巩固一下共识算法这个知识点。 (先声明,这篇文章不深入讨论共识算法本身) 于是我在 B 站大学上搜索了“共识算法”这个词:我还特意按照播放量排序了一下,准备先找个播放量高点的视…