- 博客(6)
- 资源 (2)
- 收藏
- 关注
原创 Codeforces Zip-line 650D 345Div1D(LIS)
传送门 大意:给出一个序列,求修改一个数过后的最长上升子序列。 思路:可以用主席树在线搞,也可以用树状数组离线搞,明显后者好写得多。我们首先读取所有的询问,然后就把询问绑在给出的位置,然后我们正向做一遍LIS,反向做一遍LDS,然后就可以解决这个问题了。#include <cstdio>#include <algorithm>#include <vector>#define MAXN 40
2016-03-11 14:06:10 1027
原创 BZOJ2888 资源运输(LCT启发式合并)
这道题目太神啦! 我们考虑他的每一次合并操作,为了维护两棵树合并后树的重心,我们只好一个一个的把节点加进去。那么这样一来看上去似乎就是一次操作O(nlogn)O(nlogn),但是我们拥有数据结构的合并利器——启发式合并,那么我们就可以在均摊O(log2n)O(log^2n)的时间内合并一颗树,这题就可以完美的AC啦! 什么,你问怎么维护重心?我们可以记录一个值sb表示子树的大小。怎么维护sb呢
2016-03-10 00:26:17 1155 1
原创 BZOJ1188 [HNOI2007]分裂游戏(SG函数)
传送门 拿到这道题就知道是典型的博弈论,但是却不知道怎么设计它的SG函数。看了解析一类组合游戏这篇论文之后才知道这道题应该怎么做。 这道题需要奇特的模型转换。即把每一个石子当做一堆石子,且原来在第i堆的石子(从0开始标号)的石子个数为n-i-1,这样题目就转化成了每次取一堆石子,并放回两个比这一堆的石子个数少的石堆。这样,我们就可以有序的递推sg函数值了。 即:sg(i)=mex({sg[j]
2016-03-07 01:15:01 598
原创 BZOJ4170 极光(CDQ分治 或 树套树)
传送门 BZOJ上的题目没有题面…… 【样例输入】 3 5 2 4 3 Query 2 2 Modify 1 3 Query 2 2 Modify 1 2 Query 1 1 【样例输出】 2 3 3这道题稍微分析一下就知道是求一个一个点曼哈顿距离小于k的的范围内的点的个数(把下标看做x,把值看做y)。然后我们只需要旋转一下坐标轴就变成了和“Mokia”或“简单题”一样
2016-03-06 15:56:38 1268 1
原创 BZOJ2683 简单题(CDQ分治)
传送门 之前听别人说CDQ分治不难学,今天才知道果真如此。之前一直为自己想不到CDQ的方法二很不爽,今天终于是想出来了一道了,太弱…… cdq分治主要就是把整段区间分成两半,然后用左区间的值去更新右区间的答案,每次把区间折半。对于本题来说时间复杂度T(N)=T(N/2)+O(NlogN)T(N) = T(N/2)+O(NlogN) T(N)=O(Nlog2N)T(N) = O(Nlog^2N)
2016-03-06 01:13:02 1284
原创 51NOD算法马拉松11 B君的竞技场
传送门 这题我在比赛的时候竟然没有想出来,真是…… 这道题我们可以想一想怎么搞定获胜的概率p。 我们发现再怎么这个p都是搞不了的。所以我们可以积一下分,然后就可以不用去管p了。我们要做的就是求出一个关于p的多项式。 我们又发现,对于整体的期望,并不好直接表示出来(是可以表示出来的)。所以我们就想一想怎么去递推吧。 设f(i,j)f(i, j)表示赢了i场,输了j场的概率(一个关于p的多项式
2016-03-01 14:38:22 990 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人