机房测试:Lesson5!(正反拓扑维护最长链)
摘要:题目: 分析: 这道题。。。真的累。。。 抛开一切正图反图拓扑的想法。 二分一个mid。考虑怎么check。 枚举每一条边,如果fs[ u ] + ft[ v ] + 1>mid 则说明这条边不满足,加入新图里面。 在新图上跑一边必经点,如果必经点只有一个,并且这个点删掉后,断了的链不会再大于mid
阅读全文
posted @
2019-11-07 20:44
rua-rua-rua
阅读(139)
推荐(0)
机房测试:折半+二分+判环+树上开桶
摘要:T1: 分析: 如果x小的话,就直接背包。这道题中n很小,60%可以直接3^10暴搜,25的呢?明显是折半嘛。 先搜前一半的物品,用map记录能拼凑出的种类数,再搜后一半物品,直接查询统计答案即可。 #include<bits/stdc++.h> using namespace std; #defi
阅读全文
posted @
2019-11-06 20:26
rua-rua-rua
阅读(182)
推荐(0)
机房测试:A(数学)+B(二分+曼哈顿距离)+C(性质+二分)
摘要:T1: 分析: 写出s变换的式子:(((s+a)*b+a)*b)…… 将式子化简: 又可以把m写成: 也就是将m拆成一个b进制数,每次贪心地使 i 大的时候xi尽量大,那么就可以花费最小次数凑出m。 #include<bits/stdc++.h> using namespace std; #defi
阅读全文
posted @
2019-11-05 19:01
rua-rua-rua
阅读(239)
推荐(0)
P4055 [JSOI2009]游戏 (二分图匹配+博弈思想)
摘要:P4055 [JSOI2009]游戏 分析: 每一次的移动可以看做两点之间连边,且不能重复经过一个点,如果走到一个点没有可以走的边了,则说明输了。 将棋盘黑白染色后连边即可得到一张二分图。 考虑先手应该放在哪个点会使得他自己赢。 先手放在非匹配点一定会赢。 因为对手只能走非匹配边,而先手在对手走了非
阅读全文
posted @
2019-11-04 19:27
rua-rua-rua
阅读(228)
推荐(0)
机房测试:lunch(贪心+最短路)
摘要:题目: 分析: 由数据3得:既然所有人都要学会,肯定是越早学越优。(贪心重要思路) 所以转移就是:dis[v]=max( dis[u] ,L ),u学会之后传授给v的条件是:u先学会,传授的时间在吃饭的时间内 在最短路上转移即可 再考虑有人必须学不会的限制。 如果有一个人u没有学会,就会给他周围的人
阅读全文
posted @
2019-11-04 18:56
rua-rua-rua
阅读(141)
推荐(0)
杀人游戏(tarjan思维好题)
摘要:P4819 [中山市选]杀人游戏 分析: 这种题先从简单情况分析:如果是一条链:1->2->3->4直接查入度为0的即可:因为知道1,就知道2,如果2是杀手,结束。 否则去查证2(因为已知2不是杀手 所以这一步是不需要花费被杀的风险的!!) 以此类推。最后的答案就是1-(1/n)*ans一条链只需要
阅读全文
posted @
2019-11-01 18:44
rua-rua-rua
阅读(273)
推荐(0)
骑士游戏(spfa好题)
摘要:P4042 [AHOI2014/JSOI2014]骑士游戏 分析:spfa好题很明显的转移是:f[u]=min(法术,sigma(f[v]))显然要将一个怪兽产生另一个的关系连边 但是问题在于f有后效性,当前的f[u]更新了,可能还会对之前会产生u的其它点有影响而spfa就可以解决这个问题。将转移式
阅读全文
posted @
2019-11-01 16:49
rua-rua-rua
阅读(135)
推荐(0)
机房测试11:最小生成树(最小生成树+二分)
摘要:题目: 分析: 如果直接做最小生成树,会出现以下不合法情况: 1.白边选多了。说明白边的权值太小了,我们可以通过加大白边的权值来似的选少一点白边。 2.白边选少了。与上面同理。 我们不知道白边的取值在多少合适,但明显具有单调性(白边权值越大,选的条数一定会减少),所以可以用二分来确定白边的取值。 二
阅读全文
posted @
2019-10-22 17:51
rua-rua-rua
阅读(175)
推荐(0)
机房测试模拟1(day2):矩阵+树上贪心+bfs+状压
摘要:T1:入阵曲 n,m<=400,k<=1e6 分析:考虑只有一行的情况: 将这一行求前缀和后,一段区间的和x=sum[r]-sum[l-1],如果x%k==0,那么sum[r]%k - sum[l-1]%k == 0 转化一下,也就是说:sum[r]与sum[l-1]在模k的意义下相等。 所以对于一
阅读全文
posted @
2019-10-22 17:44
rua-rua-rua
阅读(184)
推荐(0)
机房测试11&&12:矩阵游戏 && 象棋(二分图匹配)
摘要:题目: 分析: 像这种,有两种颜色,还是方阵,数据范围还那么小,首选二分图匹配。 通过分析题目,可以知道,无论怎么交换,一行或一列的1的个数是不会改变的。 最后的要求是每行和每列至少要共用一个1,。 可以想象成: 行 位置 列 行通过有1的位置向列连边,从而达到一行匹配一列。 将中间的点去掉就是二分
阅读全文
posted @
2019-10-13 15:42
rua-rua-rua
阅读(182)
推荐(0)
二分图匹配总结与习题
摘要:模板: (用时间戳记录可以避免每一次memset vis) #include<bits/stdc++.h> using namespace std; #define N 2005 #define M 1000005 int match[N],vis[N],T=0;//只存一边的匹配点 int to[
阅读全文
posted @
2019-10-12 10:17
rua-rua-rua
阅读(232)
推荐(0)
最大半连通子图(tarjan缩点+拓扑)
摘要:题目 半联通子图,即只需要两两点之间单向联通,如果有强联通分量,里面的点都是满足条件的。 所以我们可以先缩点,转换成DAG,再考虑其性质。 如果缩点之后呈现这种图,那么一定是不合法的。 也就是说,我们只需要在拓扑过程中找到最长链即可。 但直接找会出现问题,题目中还要求求出个数,如果有重边的话,会将同
阅读全文
posted @
2019-10-12 08:28
rua-rua-rua
阅读(251)
推荐(0)
机房测试11:信息拦截 (tarjan缩点+正反拓扑)
摘要:题目: 分析: 这道题真的毒瘤,思想很简单,但是细节很多。。 题意:找到从1~n的必经点(每条信息都能获取),且不在一个点数>=2 的强连通分量中(恰好获取一次)。 先将有向图缩点,转换成一张有向无环图。 然后对缩点后的图进行正反拓扑,求出必经点。 再看必经点是否在一个点数>=2的强联通分量中。 正
阅读全文
posted @
2019-10-11 19:41
rua-rua-rua
阅读(164)
推荐(0)
洛谷P2515 [HAOI2010]软件安装 (树形背包+tarjan缩点)
摘要:[HAOI2010]软件安装 分析: 每个点最多依赖一个点,最后建出来的图可能成环,也可能是一棵树。 先用tarjan缩点,对缩点后的图建边,会建成一颗森林(有成环点缩点后孤立) 用一个超级源点向入度为0的点连边,跑一遍树形dp 注意:1. 弄清楚依赖关系 2. 树形dp中要固定选父节点 #incl
阅读全文
posted @
2019-10-11 19:38
rua-rua-rua
阅读(167)
推荐(0)
机房测试10:a 礼物分配(差分约束 or 贪心+线段树)
摘要:题目: 分析: 法一: 差分约束 将题目中的限制写成三个不等式:(s数组是前缀和) 1. s[r]-s[l-1]>=c 2. s[r]-s[r-1]>=0 3. s[r]-s[r-1]<=1 将第一个式子移项成最短路中dis的形式:s[r]>=s[l-1]+c 这个式子与:dis[i] >= dis
阅读全文
posted @
2019-10-10 09:30
rua-rua-rua
阅读(173)
推荐(0)
机房测试10:车站分级 加强版(线段树优化建图+虚拟点)
摘要:题目: 弱化版 分析: 题目转化成,每次给出一段区间,在区间中选出几个点,选出的点比未选出的点等级高。 1. 将选出的点向区间中的每一个点都连权值为1的边,用拓扑求最长路径(一定是一个有向无环图),边数n*n*m,时间复杂度O(n*n*m) 2. 不直接连边,添加一个虚拟节点,将选出的点向虚拟节点连
阅读全文
posted @
2019-10-10 08:37
rua-rua-rua
阅读(191)
推荐(0)
机房测试10:混合调酒(图论转换+bfs)
摘要:题目: 分析: 先手推一个显然的式子: a*x+b*y+c*z……=( x+y+z+…… )*n 将右边移项到左边,可以得到:a*(x-n)+b*(y-n)+c*(z-n)……=0 现在转化成求合法且最小的x,y,z。 假设现在在0号节点,买一杯鸡尾酒就相当于跳一截,问题转换成了最少跳多少次能够回到
阅读全文
posted @
2019-10-09 21:57
rua-rua-rua
阅读(156)
推荐(0)
Knights of the Round Table(缩点+判奇环) poj 2942 && 洛谷SP2878
摘要:题目 分析: 原题给的是不能相连的点,直接打标记转换为补图,对所有能坐在一起的点连边。 然后就转换成了一张有许多个环的图,题中要求不在奇环中的点,那么就对每一个v-dcc dfs一次,看是否包含奇环。 如果说一个dcc包含了一个奇环,那么在dcc中的每一个点,都至少在一个奇环上。 证明: dcc上的
阅读全文
posted @
2019-10-09 12:03
rua-rua-rua
阅读(186)
推荐(0)
bzoj1123 && 洛谷 P3469 tarjan割点的运用
摘要:题目 分析: 如果一个点不是割点,那么将其剪去后,只会产生它自己到其他n-1个点的2*(n-1)个有序点对。 如果一个点是割点,将其剪去后,贡献来源于: 1.它子树中两两产生的点对 2.它所有子树与除了它子树之外的点产生的点对 3.它自己和n-1个点产生的点对 (这里的子树都指的是tarjan遍历出
阅读全文
posted @
2019-10-05 21:27
rua-rua-rua
阅读(181)
推荐(0)
机房测试5:reverse(bfs+set 或 线段树优化建图)
摘要:题目: 分析: 首先画样例分析一下,会发现如果要求一个位置要多少次翻转,就将这个位置向与它关联的点连边(关联点指的是可能与它值互换的位置),一直连到起点为止,连边的次数即为它所需步数。 所以转换成求单源最短路,因为边权为1,可以用bfs。 但是这道题n的范围很大,刚刚的做法是n*k的,考虑优化。 法
阅读全文
posted @
2019-10-05 19:31
rua-rua-rua
阅读(312)
推荐(0)