图论初步
伟大的蚊子
这个作者很懒,什么都没留下…
展开
-
UVA735 TLE&&WA,,,,悲剧未完成,最大流
题目点这 题意:输入n,有n个插座,下面n行是每个插座的类型(最后24个字母来表示一个插座,没有空格放心用scanf,但是有可能插座会相同,但是这个没有什么影响) 输入m,有m个电器,下面m行每行两个单词分别是电器的名字和插头类型(同样24个字母单词内没空格,两个单词空格隔开) 输入k,有k个转换器,下面k行每行两个单词,分别表示转换器的入口类型和插头类型 每种转换器的个数是无限的,转换器本原创 2016-03-01 23:16:04 · 543 阅读 · 0 评论 -
UVA12661 有趣的赛车比赛
白书上的例题,n个点m条单向边,每条边周期性开放和关闭,时间分别为a,b 求s到t的最短路首先对于a>cost的边,可以直接删掉 spfa,算dist的时候,加入等待的时间 然后,就没有然后了写代码越来越模块化(chou)了#include <queue>#include <cstdio>#include <vector>#include <cstring>#include <iost原创 2016-10-04 20:28:31 · 512 阅读 · 0 评论 -
UVA1515 pool ,玄学的最小割
白书题,,,,不是很理解最小割u 多刷题吧, 以后应该就会了#include<queue>#include<cstdio>#include<vector>#include<string>#include<cstring>#include<iostream>using namespace std;typedef long long LL;const int dx[]={ 0, 0,原创 2016-10-05 00:53:36 · 378 阅读 · 0 评论 -
LCA系列 hdu2587
题http://acm.hdu.edu.cn/showproblem.php?pid=2586好久不写LCA了#include <cstdio>#include <cstring>#include <iostream>using namespace std;typedef long long LL;const int N = 1e5+10;struct tree{ struct原创 2016-11-10 21:17:43 · 1365 阅读 · 1 评论 -
青岛G,
hdu5988 费用流加个log 记得EPS 坑#include<queue>#include<cmath>#include<cstdio>#include<vector>#include<cstring>#include<iostream>#include<algorithm>using namespace std;typedef long long LL;const in原创 2016-12-16 15:07:00 · 512 阅读 · 0 评论 -
多校第四场补题
题意 题目一通描述,弄得我完全懵逼。幸好讨论区,有题目意思。 题目意思为:定义f(l,r) 为区间 [l,r] 的不同元素个数/区间长度。求最小的 f(l,r) 定义域: 。题目意思,翻译转一下就是这么简单。我很菜,想不出来看了克拉丽丝的题解还是想不出来看别人blog看懂了 思路就是,官方题解给出的,二分+线段树;我们二分答案,mid。需要判断mid是否满足,假设我们定义原创 2017-08-04 18:26:46 · 325 阅读 · 0 评论 -
树的dfs序入门,BZOJ1103 ,hdu6162,EOJ3335
讨论昨天的02克拉丽丝说不需要树剖可以直接dfs序我不理解他就丢给我这题,曰:经典的题目百度题解一堆,好算知道dfs序是啥意思了#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N = 5e5 + 7;int l[N], r[N];原创 2017-08-23 18:20:31 · 449 阅读 · 0 评论 -
树分治入门 POJ1741,hdu5977
树分治讲解 对于树上的路径问题,一种高效的处理方式就是分治算法。关于树分治算法的研究,详见2009年IOI国家集训队论文——《分治算法在树的路径问题中的应用》。 通常对于树上的分治算法有两种,第一种是针对点进行的分治,另一种是针对边进行的分治,可以证明,大部分情况下点分治算法的性能更加稳定,而边分治在某些情况下,算法效率非常低。所以以下主要讨论点分治。 如POJ-17原创 2017-08-23 15:19:06 · 422 阅读 · 0 评论 -
【赛后补题】ccpc2107秦皇岛H题
ZOJ上可以补赛场上偷听到了隔壁的匈牙利然后一波操作,未曾想匈牙利之后操作如此复杂毕竟金牌题,技不如人,甘拜下风思路: 奇数和偶数分别算作一个集合,二分图构造完毕烦人的就是那个1,1+1是质数,1+2也是质数,先1内部考虑,然后1+2(写这段话的时候发现我想错了)NONONO应该先考虑1+2,再考虑1+1zoj数据没那么严,不想改了,各位随意———-吉老师纠正1+2的在二分图中已经判断了,太好了,我原创 2017-10-31 16:44:06 · 591 阅读 · 0 评论 -
多校第九场总结,树剖
http://bestcoder.hdu.edu.cn/blog/02官方题解 由于没有修改操作,一个显然的想法是离线处理所有问题 将询问拆成1-x,1-y,1-LCA(x,y),则处理的问题转化为从根到节点的链上的问题。 解决这个问题,我们可以在dfs时向treap插入当前的数,在退出时删除这个数,并且每次维护在该点上的答案。 当然也可以将所有的查询和点权排序,用树链剖分做这原创 2017-08-23 03:07:46 · 322 阅读 · 0 评论 -
某程笔试T2,最小点覆盖
题意:N*M 01矩阵,每次可以删去一行或者一列,问删去所有的1最少操作次数emmmpoj3041原题 二分图,行当成一个点放左边,列当成一个点放右边 即求最小点覆盖 == 最大匹配好久不做题脑子快生锈了code好多人吐槽这vector的格式不知道用自己写的板子算不算作弊#include<bits/stdc++.h>using namesp...原创 2018-03-29 20:34:11 · 213 阅读 · 0 评论 -
UVA12264 二分最大流,注意pdf的样例是错的
这里有篇优秀的题解=====坑点===== 注意input的输入格式,给的pdf里面有两组数据,样例输出只有一组,mdzz 样例是循环读入,mdzz,input里面写的是第一行给数据组数 狗屁不通(制杖+00) =====vc===== 给n个点的无权无向图(n<=100),每个点有一个非负数ai。若ai==0则此点归敌方所有,若ai>0则此点归你且上面有ai个属于你的士兵。保证至少有一个原创 2016-10-02 15:47:35 · 390 阅读 · 0 评论 -
UVA1658海军上将,拆点费用流
刘汝佳紫书上的题 题意:给n个点m条边的有向加权图,求1->n的两条不重复的路径,使sum权最小 (不重复的路径是指,两条路径没有公共点)思路见图用的紫书371页的模板#include<queue>#include<cstdio>#include<vector>#include<cstring>#include<iostream>#include<algorithm>using na原创 2016-10-02 03:37:44 · 445 阅读 · 0 评论 -
UVA3268 二分+最大流,嘿嘿嘿
题目题意:你的手机通讯录里有n个联系人,m个分组,其中,有的联系人在多个分组里。你的任务是重新规划通讯录,使得每个联系人只在一个分组里并且使人数最多的那个分组人数最少。找出人数最多的那个分组中的人数分析:看到要求最大值的最小值(人数最多的那组的人数最少),很容易想到二分答案。 然后check就懵逼,自己一开始想什么贪心乱搞, 然后看一下白书,又看看题解,卧槽最大流。 原谅我之前不会网络流,先看原创 2016-02-26 17:21:05 · 560 阅读 · 0 评论 -
hdu1102&hdu4081最小生成树,次小生成树
hdu1102 MST模板题 复习下kruskal,补一下之前偷懒没学的prim赤裸裸的kruskal#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N=107;int n,m,g[N][N];struct Edge{ in原创 2016-05-19 01:07:16 · 696 阅读 · 0 评论 -
UVA10305 欢迎LFX学弟
topsort 坑坑坑!!!!!!!!!!!!! 如果整张图一条边都没有,你也要输出所有的点 所以while里面要(m||n)而不是(m&&n) 最后几乎绝望了 坑的蛋都碎了#include <iostream>#include <cstring>#include <queue>#include <cstdio>using namespace std;const int ma原创 2016-06-28 23:33:37 · 403 阅读 · 0 评论 -
hdu5723 多校第一题,longlong
官方题解在这 首先注意到任意两条边的边权是不一样的,由此得知最小生成树是唯一的,最小生成树既然 是唯一的,那么期望其实也就是唯一的,不存在什么最小期望。求完最小生成树之后,接下 来的问题就可以转换成在最小生成树上求任意两点之间距离的平均值,对于每条边,统计所 有的路径用到此边的次数,也就是边的两端的点数之积。那么这条边的总贡献就是次数边 权。最后得到所有边的贡献之和再除以总路径数n∗(n−1)/原创 2016-07-20 21:10:04 · 451 阅读 · 0 评论 -
hdu5855二分+最大流
二分最大时间,最大流收益#include<queue>#include<cstdio>#include<vector>#include<string>#include<cstring>#include<iostream>using namespace std;typedef long long LL;const int INF = 0x3f3f3f3f;const int N=43原创 2016-08-17 20:12:08 · 619 阅读 · 0 评论 -
UVA11082 矩阵展开,最大流
某题解 题意: 知道矩阵的前i行之和,和前j列之和(任意i和j都可以)。求这个矩阵。每个格子中的元素必须在1~20之间。矩阵大小上限20*20。思路: 这么也想不到用网络流解决,这个模型很不错。假设这个矩阵的每一行是水管,每一列是水管,每行有出水口流到每一列,这样想比较好理解。然后每行的流量和每列的流量知道,就可以建图了。 建图过程,每行对应一个点,每列对应1个点,每行都可以流到每列,所以他原创 2016-08-18 01:15:25 · 624 阅读 · 0 评论 -
[NOIP2013]货车运输,最大生成树+LCA
codevs3287 之前写过一个pascal版本的,年代有点久远了既然问最大的运货重量,那么每次都选众多路径中最大的边都显然是对的 那么把原本的图变成一颗最大生成树,选权值最大的n-treenum条边(treenum是联通块数量) 好吧,其实是个森林, 那么现在就变成了求树上简单路径上的最值 树上简单路径,,LCA咯, 同时可以像维护st表一样维护一个树上的RMQ 当然这里不能像st原创 2016-08-20 02:44:32 · 472 阅读 · 0 评论 -
UVA10735 混合图欧拉回路
from CAH,here 讲的比lrj还要详细,个人的傻逼错误: 需要注意的是,网络流里是有反向边的,dinic跑完之后反向边不要添加到新图里面了#include<queue>#include<stack>#include<cstdio>#include<vector>#include<string>#include<cstring>#include<iostream>using原创 2016-10-10 00:40:58 · 547 阅读 · 0 评论 -
UVA1659&HDU2982->Help Little Laura 帮助小萝拉 (循环费用流)
题意:平面上有m条有向线段连接了n个点。 你从某个点出发顺着有向线段行走,给走过的每条线段涂一种不同的颜色,最后回到起点。 你可以多次行走,给多个回路涂色(要么不涂色,要么就至少给一个回路上的边全部涂色)。 可以重复经过一个点,但不能重复经过一条有向线段。 如下图所示的是一种涂色方法(虚线表示未涂色,即每次都可以从任意点出发染色)。 每涂一个单位长度将得到X分,但每使用一种颜色将扣掉Y分。原创 2016-10-11 23:52:18 · 674 阅读 · 1 评论 -
UVA1279,Asteroid Rangers,星际游击队,好烦的最小生成树
题意: 三维空间内有n(n<=50)个点,每个点有初始坐标和xyz和xyz三个方向上的速度dxdydz 求最小生成树变化的次数分析: 最多啊n^2条边,最小生成树变化,无非是原来生成树中的某条边被新边替换 所以对每两条边计算可能出现这两条边相等的时间,称之为一个Event,(n^4个) 此时生成树可能会发生变化,对每个Event检查最小生成树有没有发生变化 总复杂度n^6,会炸 优化:原创 2016-10-11 18:21:59 · 776 阅读 · 0 评论 -
EOJ Monthly 2019.2 存代码
比赛链接官方题解D签到题能不能别这么卡啊#include <bits/stdc++.h>using namespace std;typedef long long LL;LL l, r, k, m;LL fpow(LL a, LL b, LL up) { if(b * log(a) > log(up)) return -1; LL ret = 1; f...原创 2019-02-23 02:39:14 · 260 阅读 · 0 评论