Asia Regional Contest, Tokyo, 2014–10–19 这场全程在行为艺术… 最签到的应该是B,写个表达式求值。 然后是A题,问题在于求一个01串变成另一个01串的最小步数(只能交换相邻的bit),数据范围巨小只有十几,一开始想直接逆序对数,wa了两发发现显然不对…想一下一 ...
分类:
其他好文 时间:
2021-05-04 15:53:10
阅读次数:
0
题目链接 #解题思路 由于题目中的数都是互不相同的,所以每交换一对数字,序列的逆序数的奇偶性就会改变一次(可以证明序列的奇偶性变化只与交换的这对数的大小关系有关)。 #代码 int arr[maxn], tmp[maxn], n, m; ll cnt; void merge(int l, int r ...
分类:
其他好文 时间:
2020-12-29 11:09:53
阅读次数:
0
考虑莫队。 如果是单纯的莫队的话,还需要一个树状数组来维护逆序对数,这样子的话复杂度是 \(O(n^{1.5}\log n)\),难以接受。 怎么将这个树状数组消除? 考虑当前区间为 \([l,r-1]\) ,需要将右端点向右移动,即加入 \(a_r\) ,并且将答案加上 \(a_{l,l+1,\c ...
分类:
其他好文 时间:
2020-12-25 12:28:35
阅读次数:
0
Portal 根据结论,冒泡排序交换次数就是逆序对数。 考虑交换 \(l,r\),那么逆序对数会减少一些。显然只需要考虑 \(l/r\) 与 \([l,r]\) 内部元素组成的逆序对的增减,\((l,r)\) 还要去重,不难列出逆序对增加个数(就是减少个数的相反数)的式子: \[ -grt(l,r, ...
分类:
编程语言 时间:
2020-11-20 11:40:10
阅读次数:
6
现在还不是很懂cdq分治是啥。 我对它的理解大概就是一种分治方法 / 思想。 这个方法有一些限制:[区间L] < [区间R](需要对整个数组sort一遍) 这个方法可以做到:用来解决各种区间段转移问题[x->y(x<y)]的,比如,求逆序对数。(本质上就是计算左区间对右区间的贡献) 拓展:将修改转化 ...
分类:
其他好文 时间:
2020-11-17 12:14:02
阅读次数:
6
这里放一些我参加过的考试题和比赛题中没想出来的题(所以可能不仅仅是毒瘤的思维题,还有可能有简单的思维题以及窜进来的数学数据结构之类的题)。 可能会有一少部分的平时的练习题。 CF351E Jeff and Permutation 给出数组 \(a\) ,你可以改变每个数的正负,求逆序对数最少是多少。 ...
分类:
其他好文 时间:
2020-11-11 16:36:12
阅读次数:
8
题目链接 点我跳转 题目大意 给定一个长度为 \(N\) 的数组 \(A\) 要求你找到一个 \(X\) 使得 \(Bi = Ai ⊕ X\) ,其中数组 \(B\) 的逆序对数最少 如果存在多个满足条件的 \(X\) , 则输出最小的那个 解题思路 贪心+分治 大致思路如下图 然后按照图示模拟一下 ...
分类:
其他好文 时间:
2020-10-09 20:18:41
阅读次数:
29
题意: 每次翻转一段区间,询问翻转区间后整个序列的逆序对数量。 题解: 每次翻转区间,那么翻转区间的答案就是整个序列的原始答案减去这个区间里逆序对的数量加上顺序对的数量。 统计逆序对和顺序对用树状数组做。 #include<bits/stdc++.h> using namespace std; co ...
分类:
编程语言 时间:
2020-07-21 23:21:03
阅读次数:
88
(鸽 王 归 来) #算法简介 线段树合并可以将2个权值线段树合并为一个。 #实现 很简单,我们的操作如下: 2棵线段树都有的节点,把它们的值合并。 只有一颗线段树有节点,那么合并出来的线段树节点的值就是这个节点的值。 依次递归下去搞定一切。 一般来说,如果不需要用合并前的线段树信息,我们就可以卡一 ...
分类:
其他好文 时间:
2020-07-08 20:06:13
阅读次数:
47
题目描述 众所周知, HN-001 是神一般的存在。 HN-001 给了你一个 $n$ 阶排列 $\{a_i\}$ ,并向你提出了 $q$ 次询问。每次询问 HN-001 会给出四个参数 $l_1,r_1,l_2,r_2(1 \le l1 \le r1 < l2 \le r2 \le n)$ ,且 ...
分类:
其他好文 时间:
2020-06-06 22:02:05
阅读次数:
93