首页 > 其他分享 >09-03 题解

09-03 题解

时间:2024-09-03 21:14:05浏览次数:3  
标签:03 连通 传送门 题解 09 区间 翻转 逆序

09-03 题解

比赛地址

补题地址

这回打算改变一下方式, 从写 "怎么做题" 变成 "怎么想题"

T1

什么样的两个 \(a_i\) 能被合并到一个 Bug 上?

很简单 (不过我也想了好一会), mod 2 同余的两个可以合并在一起

为了培养最强 Bug, 肯定不能往上叠负数, 所以上述内容针对序列中的所有正数

确定了选哪些数, 最少的操作步数是确定的, 这里不再赘述

如果序列里没有正数怎么办?

显然只能选一个最大(绝对值最小)的负数(或 0)

但是注意, 对于值相同的若干个下标 \(i\), 他们对应的最小步数可能是不同的 (? 我也不确定)

T2

如果没有 "传送门" 该怎么做 ?

这就变成了简单的数连通块个数, 并查集维护维护

有 "传送门" 呢 ?

这就相当于在连通块之间连上了一些有向边

根据上述思路, 把每个连通块缩成一个点, 确定该点能到达哪些点 (代表着连通块), 查询时看看所有可达的连通块中包不包括终点即可

但是赛时我没有想这么多, 用了原理类似但实现不太一样的方法 : 该连通块内有哪些传送门, 这些传送门又能到达哪些传送门, 所有可达的传送门的出口是否存在和终点在一个连通块里的

T3

翻转一个区间对整个序列的逆序对数有什么影响 ?

区间内部的 "顺序对" "和逆序对" 互换, 区间外不受影响

怎么利用这个信息 ?

这一点我没想到, 所以只打了 \(O(n^2 log\ n)\) 的暴力

序列长度是 2 的幂次, 很适合分治 (形成一棵满二叉树)

对于一个分治区间, 计算他的左半部分对右半部分贡献的顺序对和逆序对

  1. 如果翻转在左半边或右半边内部, 那么这部分贡献不变, 向下递归
  2. 如果翻转包含了这个区间, 那么逆序对和顺序对的个数交换

暴力做每次询问是 \(O(n\ log\ n)\) 的, 怎么优化 ?

每次翻转的区间是等长的, 他们在分治树上位于同一层

可以先找到包含 \(l_i\) 到 \(r_i\) 的所有块的大区间, 在上面打个标记, 告诉他我在长度 (可用点的深度表示) 等于某某时进行一次翻转

这就要求我们在每一个点上存储他的子树中深度为 \(x\) 的顺序对和逆序对的和

幸好这样做只会增加一个 log, 在 Push_up 时就可以处理出这部分信息

Push_down 中有一些细节, 需要你 (我) 仔细思考一下

标签:03,连通,传送门,题解,09,区间,翻转,逆序
From: https://www.cnblogs.com/Bubblee/p/18395476

相关文章

  • [蓝桥杯 2018 省 A] 付账问题--贪心题解
    题目重述:[蓝桥杯2018省A]付账问题-洛谷#[蓝桥杯2018省A]付账问题##题目描述几个人一起出去吃饭是常有的事。但在结帐的时候,常常会出现一些争执。现在有$n$个人出去吃饭,他们总共消费了$S$元。其中第$i$个人带了$a_i$元。幸运的是,所有人带的钱的总数是......
  • 蓝桥杯2019省A糖果题解
     附上链接:[蓝桥杯2019省A]糖果-洛谷,有兴趣的小伙伴可以去试试哦~#[蓝桥杯2019省A]糖果##题目描述糖果店的老板一共有$M$种口味的糖果出售。为了方便描述,我们将$M$种口味编号$1$∼$M$。小明希望能品尝到所有口味的糖果。遗憾的是老板并不单独出售糖果,而......
  • PTA L1-037 A除以B
    L1-037A除以B(10分)真的是简单题哈——给定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果。输入格式:输入在第一行给出两个整数A和B(−100≤A,B≤100),数字间以空格分隔。输出格式:在一行中输出结果:如果分母是正数,则输出“A/B=商”;如果分母是负数,则要用括......
  • pycharm报错:TypeError: unhashable type: 'slice'
    一、原因:没有使用正确的数组或没有使用正确的读取数据的方式二、因为我在yaml中,传参用的是字典格式三、但是@pytest.mark.parametrize("",[]),需要传数组importpytest#数组的形式@pytest.mark.parametrize("name,word",[["安琪拉","火烧屁屁咯"],["黄忠","黄忠黄......
  • 8.30 上午 becoder 模拟赛总结 & 题解
    T1密码当时想到解法了,却依然认为自己不会做,我真是个人才。结论:对于$\foralli\in[1,n)$,满足密码不是$a_i$的因数,且密码是$a_k$的因数,设满足条件的最小值为$g$则答案为$\frac{n}{g}$。一种最好想的做法:枚举$\gcd(a_k,n)$的因数作为$g$,并枚举$i\in[1,n)$,判断是......
  • 8.31 上午 becoder 模拟赛总结 & 题解
    T1四个质数的和赛场亲测搜索+小剪枝可以得到70pts。考虑$O(p(V)^2)$枚举任意两个质数的和,其中$p(V)$表示$V$以内质数的个数。然后开个数组记录下对于每种和的记录有多少种情况,查询时for循环扫一遍即可,详见代码。复杂度去掉质数筛$O(p(V)^2+tn)$,代码贴在下面(100pts)......
  • 8.31 下午 梦熊联盟 NOIP 模拟赛总结 & 题解
    T1北极星一个比较好想到的点是从后往前枚举数,计算得出它需要的操作次数,然后给所有前面的数都加上这个操作次数,这样就把每个数独立出来了。所以这道题就变成了如何快速通过这些操作得到一个指定的数。观察大样例的输出,发现每一个数都是11?1?1?的形式,其中问号为+或c,我们可......
  • 9.1 上午 becoder 模拟赛总结 & 题解
    T1货车运输Kruskal重构树模板,没什么好说的,不会的把自己重构了算了,跳过。T2Slagalica可以发现拼图1和2、3拼起来还是拼图1,拼图4和2、3拼起来也还是拼图4,这两种拼图还都不能和自己拼,所以我们可以看作只有拼图1和拼图4来做。对于边界拼图分别是5、7的情况,只有......
  • 8.31 晚上 ABC369 总结 & 题解
    打了一天的比赛。ABCD太水了,直接放代码链接得了,点字母就能看对应代码。E-SightseeingTour看范围$N$只有$400$,所以我们可以先用floyd搞出任意两点间的距离。对于每次询问,发现$K_i$只有$5$,所以可以直接深搜应该走哪座桥,和应该走到哪一端。时间复杂度$O(N3+QK_i......
  • 9.2 上午 becoder 模拟赛总结 & 题解
    T1加法最开始看了好久没想出来,先做T2去了,然后回来想了一会儿发现自己可能智商有点问题。看到求最小值最大,第一反应肯定是二分,那我们怎么应该怎么check呢?考虑顺次枚举序列$A$中的每一个数,然后如果这个数没有达到mid的要求,我们肯定是要添加区间的。那么我们怎么添加区......