题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1877 题目大意: Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十字路口和M条街道,Elaxia只能从 一个十字路口跑向另外一个十字路口,街道之间只在十字路口处相交.Elaxia每天从寝室出发 跑到学校,保证寝室编号为1,学校编号为N. Elaxia的晨跑计…
题目大意: 平面上有n个点,两两不同.现在给出二叉树的定义,要求树边一定是从上指向下,即从y坐标大的点指向小的点,并且每个结点至多有两个儿子.现在让你求给出的这些点是否能构成一棵二叉树,如果能,使二叉树的树边长度(欧几里德长度)总和最小,输出这个总和.如果不能,输出-1.答案与标准答案相差1e-6内都认为是正确的. 算法讨论: 起初是这样想的,肯定是MCMF,费用是距离,然后流量一开始我是这样搞的:从父亲向儿子连流量为2的边.但是你会发现这样有一个问题,就是如果某个结点如果真的有两个儿子的话,那…
Problem Description   A new candy factory opens in pku-town. The factory import M machines to produce high quality candies. These machines are numbered from 1 to M.  There are N candies need to be produced. These candies are also numbered from 1 to N…
Cyclic Tour Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/65535 K (Java/Others)Total Submission(s): 1688    Accepted Submission(s): 859 Problem Description There are N cities in our country, and M one-way roads connecting them. Now Li…
Cyclic Tour                                                                                Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/65535 K (Java/Others)                                                                            …
题意: 有N个城市,M条单向路,Tom想环游全部城市,每次至少环游2个城市,每个城市只能被环游一次.由于每条单向路都有长度,要求游遍全部城市的最小长度. // 给定一个有向图,必须用若干个环来覆盖整个图,要求这些覆盖的环的权值最小. XD 第一次知道网络流拆点做法 但还没完全理解透,多做几题感悟感悟 ,先发一下别人题解 ,代码当然自己写 思路: 原图每个点 u 拆为 u 和 u' ,从源点引容量为 1 费用为 0 的边到 u ,从 u' 引相同性质的边到汇点,若原图中存在 (u, v) ,则从 …
题目大概说给一张有向图,每条边都有权值,要选若干条边使其形成若干个环且图上各个点都属于且只属于其中一个环,问选的边的最少权值和是多少. 各点出度=入度=1的图是若干个环,考虑用最小费用最大流: 每个点拆成两点u和u' 源点向u连容量1费用0的边,表示这个点的出度最多为1 u'向汇点连容量1费用0的边,表示这个点的入度最多为1 对于原图上任何一条有向边<a,b,c>,a向b'连容量1费用c的边,选择这条边后a的出度+1,b的入度+1,费用+c 这样跑最小费用最大流,如果没满流就无解,否则MCMF…
原题链接 这题貌似比较水吧,最简单的拆点,直接上代码了. #include <bits/stdc++.h> using namespace std; #define N 1000 #define M 5000 #define INF 0x3f3f3f3f #define mp make_pair #define pii pair<int, int> #define pb push_back int n, m, K, S, T; int d[2*N+5], vis[2*N+5], a…
最小权值环覆盖问题:用几个环把所有点覆盖,求所选取的边最小的权值之和. 拆点思想+求最小转求最大+KM算法 #include <cstdlib> #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> #include <fstream> #include <iostream> #define rep(i, l, r) for(i…
题意: 给出n个城市和m条路,每个城市只能经过一次,想要旅游所有的城市,求需要的最小花费(路径的长度). 分析: 做题之前,首先要知道什么是完美匹配.不然题目做了却不知道为什么可以用这个方法来做.完美匹配{X,Y| E},X.Y集合都有n个点(必须相等),它们必须一对一的匹配,并且所有点都要匹配. 对于此题,每个点都有且只有走一次.把每个点都拆为 i与 i'两个点,i值负责出边(就是i点只有出度),i'负责入边.这样就有了两个集合.集合内的点不会有联系.集合之间的点有联系,但是最后只有是一一对应…