上一页 1 ··· 58 59 60 61 62 63 64 65 66 ··· 83 下一页
摘要: 嘟嘟嘟 这明显就是一道树剖的水题~~~ install操作就是查询x到根节点的路径中0的个数,并且每一个节点的权值都改成1. uninstall就是查询x的子树中1的个数,并都改成0. 有一个优化就是install操作中如果当前区间已经有1了,就可以不用往上查,直接返回。因为从题中可以得到一个信息, 阅读全文
posted @ 2018-09-25 16:14 mrclr 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 很显然是一道最小割模型。 做完几道题后。图的大概就能想出来了: 1.对于每一个动物,如果是0,就和s连一条边,否则向t连一条边。 2.对于每一个任务,题中要求最大利润,可以转化成最小损失。 (1)如果都要变成1,就向汇点连一条w +g(如果有的话)的边;否则从源点连一条w +g的边。接下来 阅读全文
posted @ 2018-09-25 14:29 mrclr 阅读(476) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 最小割。 不过割掉边代表付出某一种代价,而题中让求的是利润。所以我们先把完成所有任务的总利润加起来,然后算没有完成任务付出的代价。 建图比较明白: 1.源点向任务连一条边,容量为完成这个任务赚到的钱。割掉代表这个任务没完成。 2.每一个机器向汇点连一条边,容量为买这个机器所花的钱。割掉代表没 阅读全文
posted @ 2018-09-24 21:51 mrclr 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 看数据范围,加上题中频繁提到的冲突,就可以想到算法是最小割。 1.同意睡觉的,源点就像他连一条容量为1的边。割掉它就代表他背叛了自己的意愿。 2.同理,不同意睡觉的,就像汇点连一条边。 3.考虑每一对朋友。如果两个朋友意见相反,就互相连一条容量为1的边,割掉其中的任意一条就代表朋友之间发生了 阅读全文
posted @ 2018-09-24 20:14 mrclr 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 今天才知道,原来lcs也有O(nlogn)的做法…… 首先对于两个排列(即使不是排列,离散化一下就行),我们能很容易的得出a[i]在b中出现的位置,但是无法保证出现的相对位置和a[i]相同,所以我们要解决的是求出a[i]在b中出现的相对位置相同的最长序列长度是多少。(相对位置就是对于两个的数 阅读全文
posted @ 2018-09-24 19:26 mrclr 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 这是一道比较经典的最小割模型,对只会最大流却对最小割一窍不通的我来说在适合不过了。 首先,题目中的图片非常良心,细心观察他能得到一个很重要的规律:黄色格子上的骑士只能攻击红色格子上的骑士,反之同理。 因此,我们可以把棋盘进行黑白染色,然后白点放在图的左侧,黑点在图的右侧,有点像二分图的感觉。 阅读全文
posted @ 2018-09-24 07:56 mrclr 阅读(519) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 这道题以前在学校内网刷过类似的,AC了后还挺有成就感,所以更详细的题解请看这里。 总的来说,就是用线段树维护区间最长连续0.因此我们要维护这么几个值:lmax:从当前区间左端点开始最长的连续0的长度;rmax:右端点开始最长连续0的长度;imax当前区间最长连续0的长度。有了这三个量,区间就 阅读全文
posted @ 2018-09-23 13:07 mrclr 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 当年的我不会状压,于是就很自然的爆零了。 今年的我会了状压,于是尝试一波状压dfs。 然后怎么就AC了…… 首先,有两个数组dis[i]:i 到打通的宝藏屋经过的宝藏屋数量;dp[i] 一个二进制数,第k位为1表示第k个宝藏屋已经被开采过了。 然后就是暴力dfs啦。 首先枚举打通的宝藏屋 i 阅读全文
posted @ 2018-09-21 17:00 mrclr 阅读(534) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 时隔将近一年,我终于开始捡起去年NOIP的题了。记得当时啥也不会的我看到这题无从下手,就连暴力也没写出来。 好吧,说正事。 1.如果k = 0的话很好做,就是最短路计数。 2.不过这道题允许走“冤枉路”,于是我们可以dp。考虑到每走一条边,就会对冤枉路的长度做出贡献,那么令dp[i][j]表 阅读全文
posted @ 2018-09-21 15:37 mrclr 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 首先我们考虑两种肯定碰不到的情况:1.a, b 的LCA的深度都比c, d 大。2.c, d 的LCA的深度都比a, b大。 那么我们考虑剩下的情况:设 l1 = lca(a, b), l2 = lca(c, d)。 1.如果deep[l1] >= deep[l2]:那么只要c或d到根的路径 阅读全文
posted @ 2018-09-20 14:15 mrclr 阅读(147) 评论(0) 推荐(0) 编辑
上一页 1 ··· 58 59 60 61 62 63 64 65 66 ··· 83 下一页