离省选最后一个月了,这个月比较忙,所以这个更新不会太频繁。
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
又是数论题,不过这题我居然会做。。。其实本质就是求
G∑d|nCdn mod p
G
∑
d
|
n
C
n
d
m
o
d
p
然后因为费马小定理,
p−1
p
−
1
个
G
G
相乘在模意义下就是就是1,所以现在就是求
然后我们只要求
∑d|nCdn mod p−1
∑
d
|
n
C
n
d
m
o
d
p
−
1
,也就是Lucas定理,然后再CRT合并就行了。
BZOJ3771——Math——FFT
这个题面真是有误导性。。。不过题目还是比较简单的,考虑母函数的做法。
我们对于每个斧头有价值
x
x
,则令。
那么拿走一个斧头的答案就是
A
A
,
拿走两个斧头的答案就是,因为有形如
(x,x)
(
x
,
x
)
的情况重复。
拿走三个斧头的答案是
A3−3∗A∗B+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
)
的情况,
A∗B
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
)
所以我们可以多减两个
A∗B
A
∗
B
,最后会多减去两个
(x,x,x)
(
x
,
x
,
x
)
,即
2∗C
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
的生成函数,则答案的生成函数。
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
进制下若一个数是的倍数 那么 他的每一位数字相加在
mod(N−1)
mod
(
N
−
1
)
的意义下等于0
证明也和简单,假设一个数字
x
x
,它每一位上的数字为,那么:
x=∑k[i]∗Ni,(Ni)mod(N−1)=1
x
=
∑
k
[
i
]
∗
N
i
,
(
N
i
)
mod
(
N
−
1
)
=
1
xmod(N−1)=(∑k[i])mod(N−1)=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
不带头叛变的最小占比。
那么我们对所有子树大小的
f
f
值取即是答案,即
f[i]=maxj为i的儿子(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
省选完回来补了,看到自己写了这么多题,但是考得一塌糊涂,我都感觉对不起我自己了(更对不起那些支持我的人了)。