【刷(shui)题记录】201804

离省选最后一个月了,这个月比较忙,所以这个更新不会太频繁。

4.1

BZOJ1926——Data_Structure——Persistent——Seqment_Tree
看了半天不会做,然后发现分了两个50pt,就很可做了。
第一部分 n,m<=200 n , m <= 200 ,发现值 <=1000 <= 1000 ,令 sum s u m 表示到 (i,j) ( i , j ) 位置为止的矩阵数值 >=k >= k 的权值和与个数。
每次二分最小值,判断是否可行,最后注意最小值不一定要取满。
第二部分为序列,用主席树求一段区间内 >= >= 某个值的权值和与个数,然后在主席树上二分,
如果往左子树走则加上右子树的权值与个数,最后走到叶子节点的时候判断是否需要取满即可。

4.2

BZOJ1941——Data_Structure——KD_Tree
KD-tree模板题,第一次打,当做学习吧。
KD-tree是一种十分暴力的数据结构,也许稍微学一下能用到呢233。

BZOJ1951——Math——Lucas
又是数论题,不过这题我居然会做。。。其实本质就是求 Gd|nCdn mod p G ∑ d | n C n d   m o d   p
然后因为费马小定理, p1 p − 1 G G 相乘在模意义下就是就是1,所以现在就是求 Gd|nCdn mod p1 mod p G ∑ d | n C n d   m o d   p − 1   m o d   p
然后我们只要求 d|nCdn mod p1 ∑ d | n C n d   m o d   p − 1 ,也就是Lucas定理,然后再CRT合并就行了。

BZOJ3771——Math——FFT
这个题面真是有误导性。。。不过题目还是比较简单的,考虑母函数的做法。
我们对于每个斧头有价值 x x ,则令 A[x]++,B[x2]++,C[x3]++ A [ x ] + + , B [ x ∗ 2 ] + + , C [ x ∗ 3 ] + +
那么拿走一个斧头的答案就是 A A
拿走两个斧头的答案就是 A2B A 2 − B ,因为有形如 (x,x) ( x , x ) 的情况重复。
拿走三个斧头的答案是 A33AB+2C A 3 − 3 ∗ A ∗ B + 2 C ,因为 A3 A 3 中有形如 (x,x,x)(x,x,y)(x,y,x)(x,y,y) ( x , x , x ) ( x , x , y ) ( x , y , x ) ( x , y , y ) 的情况, AB A ∗ B 可以得到 (x,x,x)(x,y,y) ( x , x , x ) ( x , y , y ) 的情况数。
又因为 (x,x,y)=(x,y,x)=(x,y,y) ( x , x , y ) = ( x , y , x ) = ( x , y , y ) 所以我们可以多减两个 AB A ∗ B ,最后会多减去两个 (x,x,x) ( x , x , x ) ,即 2C 2 ∗ C
FFT优化即可。

4.3

BZOJ4115——Math——FFT
设一种方案里三角形上三个点的坐标分别为 (0,0),(a,b),(c,d) ( 0 , 0 ) , ( − a , b ) , ( c , d ) ,则得到的平行四边形的面积为 ac+bd a c + b d
d(n) d ( n ) n n 的约数个数, D D d d 的生成函数,则答案的生成函数 =D2 = D 2

JZOJ5589——Map——Tarjan——Circle
可以发现,对于一个简单环,我们一定要缩。
对于一棵树,最后剩下的节点数最多是最长链长度+叶子节点数量-2
然后就乱搞。

4.4

JZOJ3712——DP——Compression
一道很神的状压dp,十分巧妙。
题解在这里不写了。

4.8

四天没有写题,一直在造题啊,造题还是累。

BZOJ4472——DP——Tree
很裸的树形dp吧,限制每个点的经过次数就是限制从子树中取值。
至于多种方案随便记一下就可以了。

BZOJ4473——String——Hash——2D
这个大大的毒瘤题啊- -。
做法并不难想到:因为我们要判断各种翻折旋转后能否相等,这个东西显然可以用哈希来做。
但如果是每次都重新哈希一遍显然是会挂的。因此我们可以预处理出整个大正方形的七个前缀哈希值,这样就可以“快速”判断正方形是否能怎样怎样。
没错就是七个哈希值——原本的,关于四条对称轴翻折后的,以及旋转90度,旋转180度后的。
接下来就是二分一个 len l e n 然后枚举左上角就可以了。
你还要写无数个函数,多个二分。
毒瘤。

4.9

今天是我出的第一场模拟赛,看来大家状态都不好233。
明天还有第二场qwq,不知道大家会打得怎么样。

BZOJ4489——Map——Shortest_Way——Dijkstra
对于第一问,我们实际上维护的就是一个双关键字最短路,用(cost,time)来表示即可,下站(0,0),上站(1,0),坐车(1,0)。
对于第二问,我们将所有 dis[v]==dis[u]+cost(u,v) d i s [ v ] == d i s [ u ] + c o s t ( u , v ) 的边保留,一定是一个DAG,在DAG上求最长链即可。
然后这题我莫名CE,心态爆炸。

BZOJ4723——Greed——Common
飞到每个位置,要点击的次数是一定的。
相邻两个障碍物之间的横坐标之差就是这一段距离中最大的上升(或下降)高度,
就可以计算出飞到下一个障碍物处可以到达的区间范围,再用障碍物的要求取一下max和min即可。

BZOJ4724——Others——Miscellaneous
这种题,先猜结论。
N N 进制下若一个数是 (N1) ( N − 1 ) 的倍数 那么 他的每一位数字相加在 mod(N1) mod ( N − 1 ) 的意义下等于0
证明也和简单,假设一个数字 x x ,它每一位上的数字为 k[i] k [ i ] ,那么:
x=k[i]Ni,(Ni)mod(N1)=1 x = ∑ k [ i ] ∗ N i , ( N i ) mod ( N − 1 ) = 1
xmod(N1)=(k[i])mod(N1)=0 x mod ( N − 1 ) = ( ∑ k [ i ] ) mod ( N − 1 ) = 0
于是前缀和加二分即可。

BZOJ4725——Others——Miscellaneous
一眼看过去处于懵逼状态,然后就会了。
这个数列在log级别就会炸10^9,那么在这之后的<=10^9的数只能是相邻两数的差了。
然后就随便做了。

BZOJ4726——DP——Tree
这个树形dp还是比较容易看出来的。然后题目中的最坏情况一定是叛徒为叶子节点。
接下来我们发现,带头叛变的人一定是某个叶子往上走一条链,
这样令 f[i] f [ i ] 表示 i i 不带头叛变的最小占比。
那么我们对所有子树大小 >k > k f f 值取 max m a x 即是答案,即
f[i]=maxji(min(f[j],siz[j]siz[i]1) f [ i ] = m a x j 为 i 的 儿 子 ( m i n ( f [ j ] , s i z [ j ] s i z [ i ] − 1 )
对于叶子, f[i]=1 f [ i ] = 1

BZOJ4727——Map——Tournament
这种题,完全不会。去学习了一波。
“竞赛图的任意强联通子图存在一条哈密顿回路”学习学习

4.14

最近被一堆模拟赛打成猪头,然后今天去AK了一发初中的分块题表- -。
发现我自己分块也不是很熟悉,码了好久才搞出来0 0.
大概是下面的题:
HDU1166
BZOJ2002
HDU5057
BZOJ2038
CF86D
HDU5145
HDU4638
HDU5381
HDU5312
其中有几题我并没有写分块,而是用了自己感觉比较好的方法去做。
然后新的一周模拟赛要加把劲了。
数据结构周要开始了!

4.15

其实说好的数据结构周,因为考试写的也很少。
然后因为要节省时间,所以就不把简要题解放上来了。
BZOJ2668——Map——Network_Flow——Cost_Flow——Common
LOJ6088——Others——Miscellaneous

4.16

BZOJ3451——Divide_Conquer——Point_Divide
BZOJ4552——Divide_Conquery——Binary_Search
UOJ3——Data_Structure——LCT

4.17

BZOJ4756——Data_Structure——Seqment_Tree
BZOJ4836——Divide_Conquer——Divide_Conquer——FFT

4.18

BZOJ3230——String——DA
UOJ207——Data_Structure——LCT

4.19

BZOJ4698——String——DA
LOJ6198——String——DA

4.20

HDU4859——Map——Network_Flow——Max_Flow——Common
HDU5589——Divide_Conquer——Divide_Block——Mo_Team
LOJ6085——Data_Structure——Balanced_Binary_Tree——Splay

4.21

UOJ58——Divide_Conquer——Divide_Block——Mo_Team——Tree

4.22

BZOJ1146——Data_Structure——Tree_In_Tree——Segment_Balance
BZOJ4966——Data_Structure——Balanced_Binary_Tree——Splay
JZOJ4488——Data_Structure——Presistent——Segment_Tree+Heavy_Light_Cut

4.23

BZOJ1112——Data_Structure——Balanced_Binary_Tree——Treap
BZOJ1455——Data_Structure——Merge_Heap
BZOJ1576——Data_Structure——Heavy_Light_Cut
BZOJ2434——String——AC_Machine
BZOJ3295——Data_Structure——Tree_In_Tree——BIT_Persistent_Tree
BZOJ4553——Data_Structure——Tree_In_Tree——Segment_Segment
CF528D——Math——FFT

4.24

BZOJ3307——Data_Structure——Merge_Segment
BZOJ3996——Map——Minimal_Cut
HDU5845——String——Trie
LGP1471——Data_Structure——Segment_Tree
LOJ2302——Data_Structure——Segment_Tree
LOJ2303——String——Hash

4.25

BZOJ2673——Map——Network_Flow——Cost_Flow——Common
BZOJ4860——Divide_Conquer——Point_Divide
BZOJ4870——DP——Matrix

4.26

BZOJ1208——Data_Structure——Balanced_Binary_Tree——Splay
BZOJ2407——Map——Shortest_Way——Dijkstra(今年的GDOI D2T4和这题一毛一样,直接切就行了,好题)
BZOJ3680——Others——Simulated_Annealing
CF938D——Map——Shortest_Way——Dijkstra

4.27

BZOJ1009——String——KMP+DP
BZOJ1037——DP——Common
BZOJ2594——Data_Structure——LCT
BZOJ3270——Math——Gauss
BZOJ3674——Data_Structure——Persistent——Segment_Tree
BZOJ3796——String——KMP
HDU4441——Data_Structure——Splay

4.28

BZOJ1012——Data_Structure——Splay
BZOJ1051——Map——Tarjan——Cirecle
BZOJ1070——Map——Network_Flow——Cost_Flow——Common
BZOJ2428——Others——Simulated_Annealing
HIHO1419——String——DA

4.29

BZOJ3238——String——DA

省选完回来补了,看到自己写了这么多题,但是考得一塌糊涂,我都感觉对不起我自己了(更对不起那些支持我的人了)。

你可能感兴趣的:(刷(shui)题记录)