自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Chester King

蒟蒻成长中……

  • 博客(14)
  • 收藏
  • 关注

原创 【BZOJ】2599 [IOI2011]Race 点分治

题目传送门这题是一道有点难的点分治,但是我的想法和标算好像有些出入诶……考虑点分治的一般套路,都是先求树的重心,然后计算当前子树中所有非树根节点到树根节点的距离,最后根据题目要求统计答案。这题嘛,还是一样的套路,对于当前子树,记录 所有已经搜索过的非树根节点 到树根的距离 所需的最小深度。(这句话要好好理解)然后在统计答案时,就用当前节点的深度加上k减去当前节点到树根的距离所需的最

2017-05-31 20:42:58 238

原创 【BZOJ】1026 [SCOI2009]windy数 数位dp

题目传送门感觉自己真的是越来越菜了,连数位dp都写不来了……定义f[i][j]表示当前取到第i位(从高位到低位),当前位置为j的方案数。然后就是对于是否存在前导0的分类讨论,并同时统计答案。最后利用差分的思想,把[l,r]的windy数的数量转化成[1,r]的windy数的数量减去[1,l-1]的windy数的数量即可。附上AC代码:#include #include

2017-05-31 19:22:42 203

原创 【BZOJ】2152 聪聪可可 点分治

题目传送门这道题的正解——点分治还是挺好想到的,因为题目已经明确给出这道题是以树为基础的。这题的统计答案与点分治的模板有些不同,不过也还是挺好想到的。题目要求任意两点的距离是3的倍数的点对数量,我们可以把这个转化为在有根树中,LCA到其中一点的距离为3的倍数余1,到另一节点的距离为3的倍数余2的点对数量加上LCA到两个节点的距离都为3的倍数的点对数量之和。就此,我们已经解决了这道题

2017-05-30 20:11:42 445

原创 【BZOJ】1468 Tree 点分治

题目传送门这题就是一道点分治的模板题,就当是立学习了点分治的Flag了。点分治,就是把分治的思想转移到树上,然后对于任意两个节点的路径过当前子树的情况进行特殊讨论。这道题是求任意两点间的距离不大于k的点对数量。为了保证时间复杂度的稳定性,我们可以求一遍当前子树的重心来做根。然后,我们可以统计所有过当前树根且路径长度不大于k的点对数量p,我们也可以统计所有过当前树根且路径长度不大

2017-05-25 20:53:02 526

原创 【BZOJ】2738 矩阵乘法 整体二分+树状数组

题目传送门伏地膜LYF大佬,连整体二分都会,不愧是一代神犇。向大佬低头,这位大佬讲的很详细,并且很好懂。整体二分,是一种离线的算法,就是对所有状态和询问一起二分。递归,每次对所有状态进行统计,然后根据当前所有状态的一半将当前所有询问进行划分。当所有状态只剩下一种时,就可计算当前所有询问的答案。当然,现在我还是初学整体二分,需要做更多的题目来熟练这种算法。附上AC代码

2017-05-24 19:01:29 380 2

原创 【BZOJ】4720 [Noip2016]换教室 期望DP

题目传送门这题考的是期望DP,虽然在考的时候我并不会期望DP,但这仍然不能阻挡我骗分的脚步。至少用floyd和枚举第一段时间是否换课还是可以骗到52分的。首先是用floyd跑出每两个点之间的最短路,然后就是DP。我们定义f[i][j][k]表示在第i段时间,申请换课j次,当前是否换课的最小期望。然后就是对于第i段时间和第i-1段时间是否换课的分类讨论:1.若第i段时

2017-05-22 18:43:17 247

原创 【洛谷】1821 [USACO07FEB]银牛派对Silver Cow Party 最短路径

题目传送门日常水一波,就是对正向图跑一遍SPFA,然后建一张反向图,也就是求其他所有的节点到源点的距离,然后再跑一遍SPFA。最后输出两次距离和的最大值就行了。附上AC代码:#include #include #include #include #define M 100010#define N 1010using namespace std;struct note

2017-05-15 19:31:14 338

原创 【BZOJ】1036 [ZJOI2008]树的统计Count 树链剖分

题目传送门这题还是树链剖分,并没有什么较大的改动,只是由于先前的手贱,现在打程序谨慎了很多,这一题一次就AC了。这题和上一题相比,只是多了一个树上两点的路径和查询,这一点在洛谷的树链剖分模板就体现了。给定两个节点,每次选取深度较大的一个节点沿着该节点所在的重链向上爬,并用线段树统计答案。当两个节点已经在同一重链上时,再用线段树统计一次两点间的答案就行了。这就是统计两个节点间的所有节

2017-05-14 20:08:04 270

原创 【BZOJ】4034 [HAOI2015]树上操作 树链剖分

题目传送门这题的题目意思很明确,就是树链剖分。但是,这题需要用到long long,在打lazy标记时需要强转,把int转成long long,我也在这里错了不下15次。博主花了2天来改这道题,并和许多大佬的标程对比,并没有发现任何错误。偶然中改了这个地方,发现程序AC后,当即掀桌子……博主对此表示很难受……附上AC代码:#include #include #inclu

2017-05-14 16:58:14 267

原创 【洛谷】3384 【模板】树链剖分

题目传送门这题就是模板的树链剖分,因为题目已经说得很清楚了。树链剖分就是把一棵树分成若干条链的数据结构,当一棵树退化成了一条链时,不管是求LCA还是求两个节点之间的距离都变得十分简单了,树链剖分就是这样降低时间复杂度的。将一棵树剖成了若干条链之后,就可以套用其他的数据结构来维护链上的许多信息,又是降低复杂度。所以,如此分析,树链剖分是一种非常优秀的数据结构。但是,说实话,代码的

2017-05-11 20:36:04 810

原创 【HDU】1512 Monkey King 左偏树

题目传送门题目大意:每次取出两个大根堆的对顶,将这两个节点的键值减半,维护堆的性质,然后将这两个大根堆合并起来,输出堆顶的键值。很明显,这题的大部分时间都用来合并两个大根堆了,所以我们不能用普通的二叉堆,因为普通的二叉堆合并的时间复杂度是O(n)的。考虑到合并的时间复杂度应该降低,我们就想到了左偏树(当然,斜堆、二项堆、斐波那契堆也是可以的),合并操作的时间复杂度是O(logn)的。

2017-05-04 19:20:18 321

原创 【BZOJ】1455 罗马游戏 左偏树

题目传送门这题和洛谷上的左偏树模板的解题思路是一模一样的,所以只要贴上左偏树的模板就好了。附上AC代码:#include #include #include #define N 1000010using namespace std;int n,m,dis[N],w[N],x,y,f[N],ls[N],rs[N];void read(int& a){ static ch

2017-05-04 18:10:56 356

原创 【洛谷】3377【模板】左偏树(可并堆)

题目传送门作为一个合格的蒟蒻,我们当然在学每一种算法后都要去做一些和这种算法有关的模板题。毫无疑问,这是一道左偏树的模板题。伏地膜大佬,这位大佬对左偏树的解释十分到位。左偏树就是在堆的基础上加上了距离的概念。距离指的是每一个节点到离他最近的不满节点的距离。若一个节点的左儿子或右儿子为空,则该节点是一个不满节点。左偏树有两个特殊的性质:1.一个节点的左儿子的距

2017-05-03 18:55:36 1134

原创 关于“24点”游戏的解法

最近迷上了“24点”的游戏,但是我又经常被对手虐的跟苟一样,因此我决定用我最擅长的编程来助我虐暴对手(然而并没有什么卵用)。在颓废并降智商后的我多次思考下,我想出了以下的解法:#include #include #include #include #include using namespace std;const int n=4;double a[n+1];string

2017-05-02 19:36:29 3484

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除