Gym - 101128F Landscaping(网络流)】的更多相关文章

题意 给你一个\(N×M\)的草地,有高地有低地. 收割机从低地走到高地或者从高地走到低地都要花费用\(A\),你可以花费用\(B\)把一块高地变成低地,或者把一块低地变成高地.收割机每行每列都是必须要跑一趟的. 求最小花费. 解析 \(S\)向低地.高地向\(T\)建权为\(B\)的边,相邻的地之间建边权为\(A\)的边. 然后求最小割. 相同类型的地之间为什么也要建边呢?因为类型是可以改变的. #include <bits/stdc++.h> #define FOPI freopen(&q…
题意:n*m的地,从有高地和低地,从高地走到低地或者从低地走到高地花费a,把高地和低地互相改造一次花费b.现在要走遍每一行每一列,问最小花费 思路:超级源点连接所有低地,容量b:所有地向四周建边,容量a:高地连接超级汇点,容量b.假如sum(a) > b,那么流出b,即这个地改造:假如sum(a) < b,那么就不改造. 代码: #include<cmath> #include<set> #include<map> #include<queue>…
http://blog.csdn.net/lxy767087094/article/details/68942422 #include<cstdio> #include<cstring> #include<algorithm> #include<queue> using namespace std; const int dx[]={0,-1,0,1},dy[]={-1,0,1,0}; typedef long long ll; const ll INF=10…
Problem F: Landscaping \[ Time Limit: 1 s \quad Memory Limit: 256 MiB \] 题意 题意是给出一个\(n*m\)的格子,其中一些是低海拔的,一些是高海拔的,然后有\(n+m\)辆推土车从左到右,从上到下推过去,推土车在不同高度的块之前走需要花费\(A\)元,也可以花费\(B\)元改变一个块的海拔 思路 这个网络流真的好骚啊... 先说建图怎么建图,建图分成三步 从源点到所有低海拔的块建一条\(B\)流量的边 从所有高海拔的块到汇…
[题目链接] http://codeforces.com/gym/101128/attachments [题目大意] 给出一张地图,分为高地和低地,高低地的交界线上划有红线, 现在要开小车跨过每条红线,当改变小车开的地形的时候,比如从高地开往低地, 就需要多耗油A单位,也可以花B的耗油量抬高地形或者降低地形, 问跨越所有红线所用的最少耗油量 [题解] 我们发现对于每条红线,我们需要花A去跨越地形或者花B去抬高或者降低地形, 所以我们将不同地形划分为两个集合,构成二分图, 红线左右块连流量为A的边…
题目链接:https://cn.vjudge.net/contest/283918#problem/C 题目大意:T个测试数据,然后给你一个字符串,每一个字符串包括‘s’,‘t’,‘o’,‘#’,‘.’ .'s'代表起点,‘t’代表终点,‘o’代表传送门(传送门之间可以无限次互相到达),‘#’代表墙壁,‘.’代表空的房间,一个人从s开始,只要不是‘#‘,他都可以走进去,然后问你最少填满几个房间,才能使得无论如何s到达不了t,如果不存在正解的话,输出-1. 具体思路:一个搜索题硬生生搞成了网络流?…
题目描述 FJ有一块N*M的矩形田地,有两种地形高地(用‘#’表示)和低地(用‘.’表示) FJ需要对每一行田地从左到右完整开收割机走到头,再对每一列从上到下完整走到头,如下图所示 对于一个4*4的田地,FJ需要走8次. 收割机是要油的,每次从高地到低地或从低地到高地需要支付A的费用. 但是FJ有黑科技,可以高地与低地的互变,都只需要一个支付B的费用. 询问FJ需要支付最小费用. 输入 第一行包含四个整数N,M,A,B,意义如上文所述. 接下来是一个N*M的字符串矩阵,表示农田的地形,’#’表示…
题目大意 有n种物品,m种建筑,p个人. n,m,p∈[1,20] 每种建筑需要若干个若干种物品来建造.每个人打算建造一种建筑,拥有一些物品. 主角需要通过交易来建造自己的建筑,交易的前提是对方用多余的物品来换取自己需要的物品. 询问主角是否能建造成功自己的建筑,并给出方案. 解题分析 超级恶心的读入,而且有一组数据的给出方式里没有逗号,和样例所示不同= = 根据py的性质很容易想到用网络流来做.将每种物品拆成x,y两份. 若主角多了a物品b件,连一条S到物品a,x部流量为b的边. 若主角少了a…
题意:给你一张图,每个城市有一些人,有不超过10个城市有避难所,避难所有容量上限,问最快多久可以让所有人进入避难所? 思路:二分时间,对于每个时间跑一遍最大流,判断最大流是不是人数即可.我们还需要用二进制优化一下,对于每个二分的时间,我们需要预处理出某个城市可以到达哪些避难所,表示成状态.如果在当前时间下两个城市可以到达的避难所是一样的,我们就可以用一个状态表示,这样把点数限制在了1e3级别. 代码: #include <bits/stdc++.h> #include <ext/pb_d…
Gym - 100203I  I WIN 题意:一个n*m的矩阵包含W,I,N三种字符,问相邻的字符最多能组成不重叠的WIN. 思路:比赛的时候没有发现是网络流,,居然一度以为是二分图匹配,,写了一下没过就没改了,,知道了是网络流就好办了.设一个起点一个终点,起点和每个W之间连一条边,N和终点间连一条边,W和I之间连一条边,I和N之间连一条边,不过这里为了避免重复使用同一个I,应改成W到I连一条边,I连一条边到I',再从I'连一条边到N就可以保证最优解了.求一遍最大流即可. #include <…
把'I'拆成容量为1一条边,一个入点一个出点,入点和相邻的'W'连一条容量为1的边,出点和相邻的'N'连一条容量为1,所有的'W'和源点连一条容量为1边,所有的'N'和汇点连一条容量为1的边,表示只能用一次.一发网络流就过了. 写了4000B+的贪心,然并卵 #include<bits/stdc++.h> using namespace std; const int INF = 0x3fffffff; ; #define PB push_back struct Edge { int from,…
题意: 输入一个n,后面输入n行,每一行两个数a.b.你可以对a.b进行三种操作:+.-.* 你需要保证对每一行a.b选取一个操作得到一个结果 你要保证这n行每一个式子选取的操作之后得到的结果都不一样.如果找不到就输出impossible Sample Input 1 1 4 1 5 3 3 4 5 -1 -6 Sample Output 1 + 5 = 6 3 * 3 = 9 4 - 5 = -1 -1 - -6 = 5Sample Input 2 2 4 -4 2 -4 2 -4 2 -4…
I - I WINTime Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87954#problem/I Description Given an n × m rectangular tile with each square marked with one of the letters W, I, and N, find the maximal numbe…
题目链接:http://codeforces.com/gym/101873/problem/F 题意:有n个插孔,m个机器,和一个插板,一个插孔可以连接一个机器,插板可以使一个插孔连接三个机器,找到最大的连接数 当时第一眼觉得是网络流的题目,因为看过类似的题目,他是有k个插板,但是一个插板可以使插孔多连接一个机器.这题特殊在于只有一个插板,那我们先只考虑没有插板的情况下,找到最大匹配,然后再对n个插孔寻找增广路,找到最大的匹配值 #include <bits/stdc++.h> #define…
Magic Potion http://codeforces.com/gym/101981/attachments/download/7891/20182019-acmicpc-asia-nanjing-regional-contest-en.pdf 从源点到英雄分别拉容量为1和2的边,跑两遍网络流,判断两次的大小和k的大小 #include<iostream> #include<cstring> #include<string> #include<cmath&g…
layout: post title: (寒假开黑gym)2017-2018 ACM-ICPC German Collegiate Programming Contest (GCPC 2017) author: "luowentaoaa" catalog: true tags: mathjax: true - codeforces 传送门 付队! 许老师! B.Buildings (polya定理) 题意 B:给你m面墙,每面墙是n*n的格子,你有c种颜色,问你有多少种涂色方案.用po…
http://codeforces.com/gym/101981/attachments 题意:有n个英雄,m个敌人,k瓶药剂,给出每个英雄可以消灭的敌人的编号.每个英雄只能消灭一个敌人,但每个英雄只能消灭一个敌人.现在有药剂,英雄喝了之后可以多消灭一个敌人,但每个英雄只能喝一瓶,问最多能消灭多少个敌人. 下午在实验室队内自己开训练,和JC大佬那队一起开的,当时JC大佬他们队开的J题,没有看I题,当我们队AC之后JC大佬才看了I题,听到他们说,这题就差直接把网络流三个字写在题目里了.确实非常明显…
Gym - 102346GGetting Confidence 题意:n*n的格子,每个格子上有一个数,要求每行每列都只能拿一个数,使得乘积最大,然后输出每列选择的是第几行的数. 如果是加法的话,那么很明显,就是一个网络流.可是,现在是乘法怎么办,很简单,直接取log,那么乘法便转换成了加法,然后就可以建图. 每行每列只能取一个数,就相当于行列是拆开的点,因为需要输出的是列的信息,那么源点向每一列建一条流量为1,费用为0的边,而每一行向汇点建一条流量为1,费用为0的边. 再对于每个格子,每一列向…
网络流是什么?为什么网络流中需要存在缓存数据?为什么PF中要采用缓存网络数据的机制?带着这几个疑问,让我们好好详细的了解一下在网络数据交互中我们容易忽视以及薄弱的一块.该部分为PF现有的网络流模型,但是在这里只讲解最本质的概念,而没有详细说明代码,如果有兴趣的不妨先看了这部分再去看下代码,一切或许会豁然开朗. 网络流 如果你不知道计算机中流数据模型的定义,那么你就可以试想一下河流,有着固定起点和终点的河流.将流水从某一个地方送向另一个地方的通道,我们现实中一般叫做渠道,这种渠道在计算机之间就是网…
身边的小伙伴们都在愉快地刷网络流,我也来写一发模板好了. Network Flow - Maximum Flow Time Limit : 1 sec, Memory Limit : 65536 KB Japanese version is here Maximum Flow A flow network is a directed graph which has a  and a . In a flow network, each edge has a capacity . Each edge…
«问题描述:假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取m 道题组成试卷.并要求试卷包含指定类型的试题.试设计一个满足要求的组卷算法.«编程任务:对于给定的组卷要求,计算满足要求的组卷方案.«数据输入:由文件testlib.in提供输入数据.文件第1行有2个正整数k和n (2 <=k<= 20, k<=n<= 1000)k 表示题库中试题类型总数,n 表示题库中试题总数.第2 行有k 个正整数,第i 个正整数表示要选出的类型i…
//有流量上下界的网络流 //Time:47Ms Memory:1788K #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<queue> using namespace std; #define MAXC 25 #define MAXN 250 #define MAXE 100000 #define INF 0x3f3f3f3f…
[题目分析] 网络流好题! 从割的方面来考虑问题往往会得到简化. 当割掉i,j,k时,必定附近的要割在k-D到k+D上. 所以只需要建两条inf的边来强制,如果割不掉强制范围内的时候,原来的边一定会换到另外一个位置. 妙啊! http://blog.csdn.net/thy_asdf/article/details/50428973 ↑解释的图画的不错. [代码] #include <cstdio> #include <cstring> #include <cmath>…
 Gym 101047M Removing coins in Kem Kadrãn Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Practice Description standard input/output Andréh and his friend Andréas are board-game aficionados. They know many of their friend…
 Gym 101047K Training with Phuket's larvae Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Practice Description standard input/output Thai cuisine is known for combining seasonings so that every dish has flavors that are…
Gym 101047E Escape from Ayutthaya Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u  Practice  Description standard input/output Ayutthaya was one of the first kingdoms in Thailand, spanning since its foundation in 1350 to…
 Gym 101047B  Renzo and the palindromic decoration Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Practice Description standard input/output At the ruins of Wat Phra Si Sanphet (วดพระศรสรรเพชญ), one can find famous inscr…
= =我承认我写网络流写疯了 = =我承认前面几篇博文都是扯淡,我写的是垃圾dinic(根本不叫dinic) = =我承认这道题我调了半天 = =我承认我这道题一开始是T的,后来换上真正的dinic才过 = =我承认我还没理解dinic = =我承认我一直到处改最后才发现输入顺序错了 = =我承认我已经疯了 = =我承认我写我承认上瘾了 回正题:这道题建图比较基础(但终于不是板题了),对于每个任务和每一天都建一个点(感觉把任务拆成若干点还能写二分图匹配),然后限制流量,然后判断是否满了 #inc…
最后一次训练模板(比较熟练了) 接下来训练网络流的建图 #include <cstdio> #define INF 2147483647 int n,m,ans,x,y,z,M,h,t,T,tt;long long zl; ],l[],fir[],nex[],to[],wei[]; inline int min(int a,int b){if(a<b) return a;else return b;} inline void add(int x,int y,int z){to[++M]=…
二分图基础: 最大匹配:匈牙利算法 最小点覆盖=最大匹配 最小边覆盖=总节点数-最大匹配 最大独立集=点数-最大匹配 网络流: 技巧: 1.拆点为边,即一个点有限制,可将其转化为边 BZOJ1066,BZOJ1305 2.考虑左右两部,即比如横竖.男女.比赛和人等. BZOJ1532 带下界网络流问题 ----------------------转自zyf-zyf ss和tt为附加源或者说超级源 1.无源汇上下界可行流 对于(u,v)有向边,上界为a,下界为b 构图方法为: (1) ss 到 v…