- 博客(5)
- 收藏
- 关注
原创 树链剖分
树链剖分大致思想:将树分割成若干条链的形式,对某些问题的信息维护有很好效果。树链剖分的形式:传统树链剖分有两种,分为重链剖分和长链剖分,这两种形式实现上几乎类似,但用法有些不同。重链剖分(Heavy-light Decomposition)先定义一些东西:1、重子节点表示子树最大的子节点,如果子树最大子节点有多个,任取其一即可。2、轻子节点表示除重子节点剩下的结点。3、到重子结点的边都是重边,则其他为轻边。4、若干条首尾链接的重边构成重链。用图说明一下:重链剖分实现:两个dfs
2021-05-08 23:10:34 69
原创 Mobius反演和筛法
Mobius反演和筛法前置知识:积性函数、Dirichlet卷积、莫比乌斯函数、数论分块积性函数定义:1、若f(n)的定义域为正整数域,值域为复数,即f: Z^+ →C,则f(n)为数论函数;2、若f(n)为数论函数,且f(1)=1,对于互质的正整数p,q有f(p*q) = f§ * f(q),则称其为积性函数;3、若f(n)为积性函数,且对于任意正整数p,q都有f(p*q) = f§ * f(q),则称其为完全积性函数。性质:h(x)=f(xp)h(x)=fp(x)h(x)=f(x)g(x
2021-04-19 17:17:44 161
原创 2020 ICPC Universidad Nacional de Colombia Programming Contest题解分析
A题 可能两条线段不一样长,所以把较长的线段分两段讨论,第一段,两人同时走,所以在不交叉的情况下,距离最小一定是两者的起点距离和终点距离中的最小值,交叉那距离自然就是0,第二段,一人停下来了,另一人还在走,并且是沿直线走,所以一个点固定,另一个点沿直线行走,两人的距离和一人行走的距离的函数,要不就是单调函数,要不就是凹函数,所以可以用三分解决。#include<bits/stdc++.h>using namespace std;const double eps = 1e-7;struct
2020-11-20 09:04:04 194
原创 树状数组模板大全
树状数组模板int lowbit(int x){return x&(-x);}一、点更新:`void update(int x, int y){ while(x<=n){ c[x] += y; x += lowbit(x); } //for(int i=x;i<=n;i+=lowbit(i)) c[i] += y;}`二、区间查询:int getsum(int x){ int ans = 0; for(int i=x;i;i-=lowbit(i)) an
2020-11-08 14:56:49 315
原创 hdu1171(01和多重背包问题)
hdu1171(背包问题)多重背包转化为01背包欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown
2020-06-11 08:27:27 124
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人