FJOI2017前做题记录

时间:2022-10-16 21:49:50

FJOI2017前做题记录

2017-04-15

[ZJOI2017] 树状数组 问题转化后,变成区间随机将一个数异或一,询问两个位置的值相等的概率。(注意特判询问有一个区间的左端点为1的情况,因为题目要求,所以这种情况要特殊考虑)考虑一个修改操作对一个询问的影响,分为以下几类:

(1) 区间不包含任何一个点,这种情况对答案没有影响。

(2) 区间只包含其中一个点,这种情况有\(1/len\)的概率影响答案

(3) 区间同时包含两个点,这种情况有\(2/len\)的概率影响答案。

这个时候我们把线段的左右端点看做两维,操作时间看做第三维,然后这个时候原问题就变成了三维偏序问题。用树套树或cdq分治+线段树来解决即可。(我写的是cdq分治套线段树)。

2017-04-16

AtCoder Grand Contest 013 A B C 一场非常失败的\(AGC\),整场就过了第一题(还WA了三发)。。。

A题问一个数组最少能被划分成多少个权值单调不增或不减的区间。刚开始懒得写贪心,然后就找性质,发现只和波峰和波谷的数量有关。然后写一发样例就不过了。(相邻的波峰和波谷选一个就可以了)然后强行判过样例交上去WA。很着急啊,然后发现有可能波峰或波谷是一段平的。于是就直接unique掉然后交。又WA。发现unique我打的是unique(a+1,a+n)。。。感觉整个人傻逼了。改完a。

B题题目看很久+想复杂了。找一个路径使得和路径的头尾相连的点都在路径中。题目叫哈密顿路径然后我就真的往那边去想了QAQ,结果就掉坑了(果然题目里的算法都不能信)。。。正解是直接用deque去扩展,扩展到不能扩展位置。(其实这个思路有在我脑袋里闪过,结果不知道怎么搞deque就弃了)

C题思维题啊。在刘汝佳的白书上有这道题,就是蚂蚁撞来撞去那道。我的思维卡在如何找到某一个数的位置上然后未果。看了题解还是不懂。最后强行看别人Code去理解。考虑以下几个性质(这几个性质白书上也有):

  1. 两个蚂蚁相撞以后会头可以看做他们继续前进,然后交换他们\(id\) 。
  2. 任何时候所有蚂蚁的相对位置不会发生改变。
  3. 所有蚂蚁的最终位置可以直接加上/减去t来确定。

由2 3 可得,最终蚂蚁的位置是通过对所有蚂蚁的终态排序得到的。也就是说我们只要知道第一个蚂蚁的位置就知道了所有其他蚂蚁的位置。

如何求得第一个蚂蚁的位置是本题的关键(也是我考场上不会做的关键QAQ)。一个思路是考虑在什么时候整个序列的绝对位置会发生变化。我们发现,这个时候就是有一个蚂蚁跨过0这个位置的时候。如果这个蚂蚁跨过0以后顺时针移动,那么相当于整个排名右移一位,并且把最后一位放到了第一位。逆时针就相反。所以我们就记录一下绝对排名的偏移量,最后输出时第一个蚂蚁的位置就是这个偏移量。

2017-04-17

[Sdoi2017]d1t3 矩阵快速幂(性质:循环矩阵)

2017-04-18

[Sdoi2017]d1t1 莫比乌斯反演

2017-04-19

【UER#6】抓捕罪犯 2-SAT

2017-04-20

[Sdoi2017]d2t1 分数规划+费用流

[Ynoi2017]d1t1 莫队+bitset

2017-04-21

3489: A simple rmq problem 可持久化树套树

[Ynoi2017]d1t2 树链剖分套线段树、位运算相关、贪心

2409: 地下车会 上下界的最大流

3876: [Ahoi2014]支线剧情 上下界费用流

2521: [Shoi2010]最小生成树 最小生成树->联通关系->最小割->最大流

2017-04-22

4570: [Scoi2016]妖怪 凸包。注意点:不仅仅是最优斜率要统计答案,对于凸包上的边也要统计答案。

4817: [Sdoi2017]树点涂色 lct+线段树。注意:lct上的父亲并不是原树上的父亲!