06 2018 档案

摘要:#define REP(i, a, b) for(int i = (a); i prime;void get_prime() { memset(is_prime, true, sizeof(is_prime)); is_prime[0] = is_prime[1] ... 阅读全文
posted @ 2018-06-28 18:07 Sugewud 阅读(111) 评论(0) 推荐(0) 编辑
摘要:参考了http://www.bubuko.com/infodetail-1276416.html首先是逆向思维, 向把每条边看作一条路径, 然后再去合并然后我们讨论怎么样合并时最优的我们讨论当前的点u那么首先直观感受, 因为如果要合并一次, 就需要两条边,所以最多可以... 阅读全文
posted @ 2018-06-23 15:57 Sugewud 阅读(196) 评论(0) 推荐(0) 编辑
摘要:想了很久, 以为是网络流最大流, 后来建模建不出来, 无奈。后来看了 https://blog.csdn.net/hao_zong_yin/article/details/79441180感觉思路很巧妙。首先题目等价于让每条边经过的次数最多。那么假设一条边点a到点b,... 阅读全文
posted @ 2018-06-23 11:52 Sugewud 阅读(163) 评论(0) 推荐(0) 编辑
摘要:这道题要逆向思维反过来从大到小枚举, 就是在矩阵中一点一点加进去数字,这样比较好操作, 如果正着做就要一点一点删除数字, 不好做。我们需要在这个过程中维护联通块的个数, 这里用到了并查集。首先加进去一个数, 联通分量数字先加一, 然后再考虑有没有和其他联通分量相连。从... 阅读全文
posted @ 2018-06-23 10:34 Sugewud 阅读(174) 评论(0) 推荐(0) 编辑
摘要:书上写的是UVa 12011, 实际上是 12264参考了https://blog.csdn.net/xl2015190026/article/details/51902823这道题就是求出一种最优的移动士兵的方式, 使得与敌方相邻的阵营中最少的士兵最多因为只能在我方... 阅读全文
posted @ 2018-06-22 20:45 Sugewud 阅读(223) 评论(0) 推荐(0) 编辑
摘要:用到了二分图的一些性质, 最大匹配数=最小点覆盖 貌似在白书上有讲还不是很懂, 自己看着别人的博客用网络流写了一遍反正以后学白书应该会系统学二分图的,紫书上没讲深。目前就这样吧。#include#include#include#include#include#defi... 阅读全文
posted @ 2018-06-22 18:31 Sugewud 阅读(186) 评论(0) 推荐(0) 编辑
摘要:这道题写了两个多小时……首先讲一下怎么建模我们的目的是让所有点的出度等于入度那么我们可以把点分为两部分, 一部分出度大于入度, 一部分入度大于出度那么显然, 按照书里的思路,将边方向后,就相当于从出度大于入度的运一个流量到入度大于出度的点。紫书 例题 11-13 UV... 阅读全文
posted @ 2018-06-18 15:20 Sugewud 阅读(188) 评论(0) 推荐(0) 编辑
摘要:(1)判断欧拉回路(把所有边走一遍,最后回到起点)无向图的所有点度数为偶数, 且联通有向图的所有点入度=出度, 且联通欧拉道路(把所有边走一遍, 不回到起点)无向图所有点的度数为偶数 或者 除了两个度数为奇数外其余的全是偶数。同时要联通(忽略方向)有向图所有点 出度=... 阅读全文
posted @ 2018-06-18 10:23 Sugewud 阅读(226) 评论(0) 推荐(0) 编辑
摘要:bool dfs(int u){ vis[u] = -1; REP(i, 0, g[u].size()) { int v = g[u][i]; if(vis[v] == -1) return false; else if(!vis[v]) dfs(v); } ... 阅读全文
posted @ 2018-06-18 10:08 Sugewud 阅读(125) 评论(0) 推荐(0) 编辑
摘要:这道题写了好久……在三维空间里面有动的点, 然后求有几次最小生成树。其实很容易发现, 在最小生成树切换的时候,在这个时候一定有两条边相等,而且等一下更大的那条边在最小生成树中,等一下更小的边不在最小生成树中。这样的话过了这个时刻,等一下更小的边就会代替等一下更大的边,... 阅读全文
posted @ 2018-06-17 16:28 Sugewud 阅读(349) 评论(0) 推荐(0) 编辑
摘要:这道题要分隔草和洞, 然后刘汝佳就想到了“割”(不知道他怎么想的, 反正我没想到)然后就按照这个思路走, 网络流建模然后求最大流最小割。分成两部分, S和草连, 洞和T连外围的草和S连一条无穷大的弧, 表示不能割, 若原来是洞就改成草然后加上花费。然后非外围的草和S连... 阅读全文
posted @ 2018-06-17 10:41 Sugewud 阅读(236) 评论(0) 推荐(0) 编辑
摘要:很奇怪, 看到网上用的都是匈牙利算法求最大基数匹配紫书上压根没讲这个算法, 而是用最大流求的。难道是因为第一个人用匈牙利算法然后其他所有的博客都是看这个博客的吗?很有可能……回归正题。题目中只差一个数字的时候可以匹配, 然后求最少模板数。那么肯定匹配的越多就越少, 也... 阅读全文
posted @ 2018-06-16 17:05 Sugewud 阅读(248) 评论(0) 推荐(0) 编辑
摘要:把每个电梯口看作一个节点, 然后计算边的权值的时候处理一下, 就ok了。#include#include#include#include#define REP(i, a, b) for(int i = (a); i rhs.t; }}; vector g[MAXN... 阅读全文
posted @ 2018-06-16 14:31 Sugewud 阅读(125) 评论(0) 推荐(0) 编辑
摘要:一开始要符合题目条件, 那么肯定没有任何一个点是孤立的, 也就是说没有点的度数是1所以我就想让度数是1的叶子节点相互连起来。然后WA然后看这哥们的博客https://blog.csdn.net/trote_w/article/details/79504280原来连叶子... 阅读全文
posted @ 2018-06-16 10:32 Sugewud 阅读(262) 评论(0) 推荐(0) 编辑
摘要:这道题感觉思路非常巧妙, 我是看了别人的博客才想明白的。这里用到了并查集, 以根节点为中心城市, 然后把边从大到小排序, 每次的当前的边即为容量,因为是目前的最小值, 然后去算总的容量, 每次选容量大的点作为新的根节点, 也就是新的中心城市。细节见代码。#includ... 阅读全文
posted @ 2018-06-14 18:14 Sugewud 阅读(127) 评论(0) 推荐(0) 编辑
摘要:这道题改了两天……因为这道题和节点有关, 所以就用拆点法解决节点的容量问题。节点拆成两个点, 连一条弧容量为1, 表示只能经过一次。然后图中的弧容量无限。然后求最小割, 即最大流, 即为答案。固定一个源点, 然后枚举汇点, 然后求最小的最小割就ok了。这里的拆点法连边... 阅读全文
posted @ 2018-06-12 18:51 Sugewud 阅读(128) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示