做题&学习记录(10月)

2019.10.1

UOJ Easy Round #1

A:一开始就想偏了,从不等式角度来看,其实就是一个均值不等式。

B:字典树水题,记录一个指针指向真正的目录即可。

C:可撤销并查集+离线算法。

顺便学习了一下可持久化并查集,就是一个按秩合并的可持久化数组(用可持久化线段树实现即可)。


2019.10.2

UOJ Easy Round #2

A:以||为边界分段,发现每一段能制造新手机的个数和能继续运行到下一段的手机个数是可以线性计算的,$O(n)$扫一遍就好。

B:每个联通块分开处理,求出题解中的“逆dfs序”,然后考虑dfs树的贡献(考虑树上可能出现的返祖边),在序列上区间DP计数即可。

C:大概就是尽可能的让真理守护者不影响谣言的传播(最大值),然后把得到的置换取个反就能得到另一个答案(最小值)。

51nod-提高组模测-3

A:按照深度排个序,再求出从根节点到每个叶节点经过的点个数,然后贪心的选即可。

B:考虑K的因子进行DP即可。

C:本质上就是求两棵树中的每个节点有多少个共同儿子,对其中一颗求出DFS序,在第二颗搞一个线段树合并来维护子树即可统计。


2019.10.3

UOJ Easy Round #3

A:容易发现最优做法一定是先右下或下右,再一直FN,最后再横着或竖着走,于是O(1)计算即可。

B:可以将条件转化成$i,j>=0,i+j>=k,A_{v+i,u+j}+=C_{i+j}^{i}$(显然和原条件等价),就变成了从$(v,u)$往右下方走大于等于$k$步的方案数,直接DP即可。

51nod-普及组模测-1

客串了一下高一年级的模拟赛,三个题都挺水的。

A:排个序之后贪心。

B:从高位到低位贪心。

C:考虑每个数对答案的贡献。

AtCoder Grand Contest 025 D

有点意思,设$d=a^2+b^2$,根据$a,b$的奇偶性来进行染色。


2019.10.4

Atcoder Grand Contest 025 E

直接每次选择⼀条未被覆盖的边的⼀个⽅向(优先选已经被覆盖了一个方向的边),然后找一条边覆盖它。容易发现这样答案是理论最大值(即每条边的贡献都为min{2,覆盖路径数})。


2019.10.5

Atcoder Grand Contest 025 F

从高位到低位枚举$i$,如果两个序列的第$i$位都为1,那它们都可以跳到第$i+1$位,然后根据第$i+1$位的值分类讨论(重复$K$次)。用set维护序列中1的位置,优化K次跳的过程即可。


2019.10.6

Atcoder Grand Contest 024 D

我们确定一个中心(边或者点),然后把树的形状都变成关于中心对称(对称的两个点可以取相同颜色),发现最小的颜色数一定是直径的一半。

至于最小叶子数?直接枚举中心点(边)然后暴力计算即可。

Atcoder Grand Contest 024 E

发现$A_i$可以看作是$A_{i-1}$插入一个数$x$得到的,而且$x$必须严格大于插入位置右侧的数字(字典序递增)。

把序列看成一个树,子节点的权值必须严格大于父节点,令$f_{i,j}$表示权值为$i$,大小为$j$的方案数。

则:$f_{i,j}=\sum_{0≤t<j}f_{i,t}*\sum_{i<z≤k}f_{z,j-t-1}*C_{j-1,t}$,利用前缀和优化一下即可。


2019.10.7

Atcoder Grand Contest 023 D

考虑最左边和最右边两个点的人数,发现可以把其中一个点合并到另外一个点上,重复操纵直到所有的点都在同一边边或者只剩一个点即可。

Codeforces 922D

贪心,根据$s$的比例排序即可。


2019.10.8

POJ 2054

贪心,假设$u$是权值最大的非根节点,$v$是$u$的父节点,那么选完$v$后一定要先选$u$才最优,于是把$u$合并到$v$上,重复合并到只剩下根节点即可。

Atcoder Grand Contest 023 F

就是之前两个题的综合版,显然0要尽量靠前,那么按照01比例排序贪心,往父节点合并即可。

Atcoder Grand Contest 022 D

贪心,对于每个点,根据$(t_i<=2*x_i, t_i<=2*(L-x_i))$来分类讨论。把可以减少次数的点对(比如说有$x_i<x_j$,满足先走$j$,购物完出来刚好可以坐上反方向的车到$i$购物)匹配即可。


2019.10.9

Atcoder Grand Contest 022 E

定义数组$a$表示每两个相邻的$1$之间的$0$的个数,如$0010110010$表示为$21021$。再删除掉一些不必要的数,根据$a$数组进行$DP$即可。


2019.10.10

Atcoder Grand Contest 022 F

把坐标转化为$x$进制,然后考虑坐标的多重集合。讨论出最终集合所满足的性质后DP。

PS:感觉题目越来越神仙了,PDF里讲的也很简略(我太弱了),网上也没人写E,F题的题解。昨天想了两节语文课还是没能搞懂题解。可能我要鸽掉PDF里面的一些讲得不太清楚的题目了。

Atcoder Grand Contest 020 C

将所有子集按权值排序,然后头尾依次相加,可以发现每次的和都是$\sum_{i=1}^{n}A_i$。那么$>=\frac{\sum_{i=1}^{n}A_i}{2}$的第一个权值即为中位数。用$bitset$优化01背包即可。


2019.10.11

AtCoder Grand Contest 020 E

设$G(s),F(s)$分别表示$s$所有子集的表示法(不可分割),表示法(可分割),然后直接暴力DP即可。(玄学复杂度)

AtCoder Regular Contest 070 D

可有可无的元素⼀定是最小的若干个,于是排序。若前$i$个元素的和为$S$,如果用$i+1 ... n$的数无法拼出一个在$k-S ... k-1$之间的数,那么前$i$个数都是可有可无的。背包即可(大于$k$的元素可以看作是$k$)


2019.10.12

AtCoder Regular Contest 061 D

用右下角的格子来表示一个区域,用个$Map$存一下有贡献的区域,对于每个黑色的点直接更新答案。

AtCoder Regular Contest 061 E

把原图看成是从一个站台上车下车都要花费1的代价,然后一个公司内部的代价为0,拆点跑最短路。

Atcoder Code Festival 2017 Qual A D

把曼哈顿距离转化为切比雪夫距离,然后$k*k$个格子分成一个大矩形,矩形内的点颜色相同,相邻矩形的颜色不能相同,按照奇偶性染色即可。

Atcoder Code Festival 2017 Qual A F

正难则反,考虑怎么样最快的拆分一个数$x$,显然是每次拆一半最快(即二进制拆分)。从前到后处理,线性维护拆的次数即可。


2019.10.13-2019.10.15

Atcoder Code Festival 2017 Qual B E

把原过程划分成五个部分,暴力枚举是$O(n^4)$的,用两次前缀和优化后即可$O(n^2)$计算。

Atcoder Code Festival 2017 Qual B F

结论题,每次选出字典序最小和最大的的字符串拼在一起即可。

Atcoder Code Festival 2017 Final F

挺有意思的,观察样例找到规律后直接构造即可。

Atcoder Code Festival 2017 Exhibition B

一个个考虑,把当前$a_i$变成$v$的代价为:$v-a_i+$比$v$大的数字个数(把$a_i$变成$v$后往前交换)。用动态开点的权值线段树维护“$v+$比$v$大的数字个数”的最小值即可。

Atcoder Code Festival 2017 Team Relay H

小于$\sqrt(300)$的质因子直接暴力搜索,大于的质因子贪心即可(至多只包含一个)。

Atcoder Code Festival 2017 Team Relay I

考虑容斥掉不合法的,状压$DP$一下即可。

Atcoder Code Festival 2017 Team Relay J

结论题,从大到小排序后第$i$个锅被取到的概率为$\frac{2n-i}{2n-1}$。

PS:$PDF$上的题就告一段落了。感觉好多知识点都忘了(刚才被问KMP,一时间都想不起来Next数组怎么求了),之后主要复习一下NOIPCSP的内容和一些数据结构(或许偶尔做做$ARC$和$UOJ$)。


2019.10.16-2019.10.18

LGR-060 Div2

T1:考虑每个数的贡献,$O(nlogn)$预处理即可。(好像正解是$O(n)$的?)

T2:转化成差分约束直接跑即可。

T3:水题,直接模拟。

T4:直接建虚树,$dfs$找到链的两端直接算即可。(好像正解也是$O(n)$?)


2019.10.19

Atcoder Beginner Contest 142

ABC:三个大水题,直接模拟。

D:贪心,从小到大选。(因为小的数约数也比较少)

E:直接状压DP即可。

F:注意到只需找到一个最小环,$O(n)$枚举起点,取最小值即可。


2019.10.20-2019.10.22

AtCoder Regular Contest 103

C:贪心,选出现最多的改即可(要注意不相等)。

D:二进制拆分,每次选绝对值最大的坐标来减。

E:选一个根节点挂一些长度为1的边,然后换一个根节点继续挂。

F:最大的肯定是叶节点,然后算出子节点和父节点的关系,自底向上确定节点。

PS:感觉ARC构造题好多啊。。


2019.10.23-2019.10.24

Atcoder Regular Contest 102

C:水题,列出同余方程直接算即可。

D:二进制拆分组合出$[0,L-1]$的数即可。

E:容斥原理,注意一下$i$为偶数的情况即可。

F:有点神仙的思维题,大概就是反过来考虑,然后推出一些结论来判定。

posted @ 2019-10-01 19:02  Aegir  阅读(168)  评论(0编辑  收藏  举报