Evanyou Blog 彩带
摘要: "传送门啦" 再一次见证了分块的神奇用法,在数论里用分块思想。 我们要求 $ ans = \sum\limits ^{n} _{i=1} (k \% i) $ ,如果我没看错,这个题的暴力有 $ 60 $ 分,当然,不甘平凡的我们怎么能为 $ 60 $ 分折腰,我们来看正解打法。 我们要知道 $ a 阅读全文
posted @ 2018-10-31 21:09 Stephen_F 阅读(155) 评论(0) 推荐(0) 编辑
摘要: "传送门啦" 想让最大值最小,所以,这题可以用二分法,排序之后发现可以并查集,因为要使最大值最小,排序后这个最大值是存在的。 对于会冲突的两个罪犯,我们连一条无向边,然后按权值从大到小排序,从大到小枚举每一条边,如果边上的两个罪犯已经在一个监狱,那么输出结果。 冤家路窄没办法咯 否则将两个罪犯放到不 阅读全文
posted @ 2018-10-31 17:55 Stephen_F 阅读(186) 评论(0) 推荐(0) 编辑
摘要: "传送门啦" 15分暴力,但看题解说暴力分有30分。 就是找到公式,然后套公式。。 cpp include include include include using namespace std; long long read(){ char ch; bool f = false; while((c 阅读全文
posted @ 2018-10-31 17:54 Stephen_F 阅读(96) 评论(0) 推荐(0) 编辑
摘要: "传送门啦" 这个题可以说是tarjan强连通分量的裸题,但需要维护每个强连通分量的最小值,所以做法就很明确了。 我们先明确几个数组的意思: 1.首先是tarjan缩点中的几个数组: dfn[i]:i点的时间戳 low[i],表示这个点以及其子孙节点连的所有点中dfn最小的值 stack[],表示当 阅读全文
posted @ 2018-10-31 17:52 Stephen_F 阅读(123) 评论(0) 推荐(0) 编辑
摘要: "传送门啦" 这是一个tarjan强连通分量与出度结合的例题。 先明确一下题意,如果这个点(缩点之后的)没有出度,这个点才能成为明星牛(明星牛的定义是:所有牛都喜欢他才可以)。 由于我们进行了缩点,所以我就另外开一个数组num[i]:表示这个强连通分量中有多少个点。 以上就是怎样处理最后的答案: 如 阅读全文
posted @ 2018-10-31 17:51 Stephen_F 阅读(230) 评论(0) 推荐(1) 编辑
摘要: "传送门啦" 这个题就是tarjan强连通分量与入度的例题了。 思路: 利用缩点的思想,先预处理一下所有的强连通分量,然后把每个强连通分量内的所有节点看做一个节点,然后处理一张新图,然后检查每个点的入度,然后取入度为 0 的点(缩点后)的个数,即为信息出发点。 可能有人想问为什么?? 大体说明一下: 阅读全文
posted @ 2018-10-31 17:50 Stephen_F 阅读(142) 评论(0) 推荐(0) 编辑
摘要: "传送门啦" 其实这个题只要读懂分析好题意就不是很难。 就是将一个有向图进行缩点操作,把一个强连通分量看成一个点,求入度为 0 的点和出度为 0 的点各有多少。 在这里先向大家推荐两个题目,建议大家先去看看那两个题: 1. "p2002消息扩散" 这是强连通分量与入度关系的例题 2. "p2341受 阅读全文
posted @ 2018-10-31 17:49 Stephen_F 阅读(131) 评论(0) 推荐(0) 编辑
摘要: "传送门啦" 这是强连通分量与背包的例题 需要注意的就是价值和价格两个数组不要打反了。。 另外 这是 双向图!!! 阅读全文
posted @ 2018-10-31 17:47 Stephen_F 阅读(112) 评论(0) 推荐(0) 编辑
摘要: "传送门啦" 非常神奇的分块大法。 每块分 √N 个元素 , 预处理出来:对于每个点,记录两个量:一个是它要弹几次才能出它所在的这个块,另外一个是它弹出这个块后到哪个点。 查询操作:一块一块跳过去 单次复杂度 O(√N) 修改操作:只需要把相应的块改一遍就好了 这个也是O(√N) include i 阅读全文
posted @ 2018-10-31 16:07 Stephen_F 阅读(137) 评论(0) 推荐(0) 编辑
摘要: "传送门啦" 一个人要想知道自己的生日,就意味着信息的传递是成环的,因为每轮信息只能传递一个人,传递的轮数就等于环的大小 环的大小就等于环中的两个点到第三个点的距离之和加一,我们就可以在使用并查集时,维护每个点到某个确定点的距离 不妨令这个确定点为当前点的祖先,在同一个集合中,所有的点拥有共同的祖先 阅读全文
posted @ 2018-10-31 15:11 Stephen_F 阅读(98) 评论(0) 推荐(0) 编辑
摘要: "传送门啦" 下面来看任务B。我们发现,图中只要存在入度为0的点和出度为0的点就永远不可能满足要求:“ 不论我们给哪个学校发送新软件,它都会到达其余所有的学校 ”。我们还发现,只要在入度为0的点和出度为0 的点之间连一条边,就可以同时消灭两个“不合法”的点。如果不能做到刚好两两配对(不妨假设入度为0 阅读全文
posted @ 2018-10-31 15:09 Stephen_F 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 树状数组类似于线段树的变形。。 c[i]表示其子树的所有叶子节点的A[]之和 c[4]=A[1]+A[2]+A[3]+A[4] c[6]=A[5]+A[6] 不难看出:c[i]代表的一定是一个连续的区间 对于lowbit[]数组:就是求得最后一个1 在倒数第几位,然后将其得出的结果加上x自身就可以得 阅读全文
posted @ 2018-10-31 15:08 Stephen_F 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 一、基础知识 1、矩阵的定义 ! 2、行矩阵和列矩阵应该比较好理解,就是一个矩阵的每一行都可以称之为一个行矩阵,同理列矩阵也一样。 3、同型矩阵:设有矩阵A和矩阵B,矩阵A的行数和列数都与矩阵B的相同,则矩阵A、B是同型矩阵 像图中这样就是两个同型矩阵 4、单位矩阵 在矩阵的乘法中,有一种矩阵起着特 阅读全文
posted @ 2018-10-31 15:07 Stephen_F 阅读(162) 评论(0) 推荐(0) 编辑
摘要: "传送门啦" 非常神奇的分块大法。 这个题一看数据范围,觉得不小,但是如果我们以 $ \sqrt(x) $ 为界限,数据范围就降到了 $ x include include include include using namespace std; const int maxn = 150005; i 阅读全文
posted @ 2018-10-31 15:05 Stephen_F 阅读(109) 评论(0) 推荐(0) 编辑
摘要: "传送门啦" 战略游戏这个题和保安站岗很像,这个题更简单,这个题求的是士兵人数,而保安站岗需要求最优价值。 定义状态$ f[u][0/1] $ 表示 $ u $ 这个节点不放/放士兵 根据题意,如果当前节点不放置士兵,那么它的子节点必须全部放置士兵,因为要满足士兵可以看到所有的边,所以 $ f[u] 阅读全文
posted @ 2018-10-31 14:21 Stephen_F 阅读(134) 评论(0) 推荐(0) 编辑
摘要: "传送门啦" 这个题没有想象中复杂。 我们先有向边建立,因为我们无法改变有向边的方向。 建立完之后跑一边拓扑排序,我们按拓扑序小的指向大的就好了。 解释: 我们知道如果一个点在另一个点顺序的后面的话,如果我们添加这个点回去的边显然是不合理的,所以我们每读入一条无向边的时候我们判断这个点在拓扑排序里面 阅读全文
posted @ 2018-10-31 11:07 Stephen_F 阅读(159) 评论(0) 推荐(0) 编辑
摘要: "传送门啦" 这个树形dp就没那么简单了,运用了一下贪心的思想 不同的排序方法对应着不同的转移方程,如果我们用 $ f[x] = max(f[x] , b[i] +cnt i + 1) $ 来进行转移就要从小往大排,才能使f[x]小,如果用 $ f[x] = max(f[x] , b[i] + i 阅读全文
posted @ 2018-10-31 09:49 Stephen_F 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 这个题。。 刚开始没看见输入若干行,所以有的点就。。 令 m = n (n 1) / 2 已知 s = {s (1), s(2), ..., s(m)}, s(i) include include include using namespace std; const int maxn = 310; 阅读全文
posted @ 2018-10-31 08:29 Stephen_F 阅读(246) 评论(0) 推荐(0) 编辑