分配问题 费用流 原创 fish04 2022-05-27 19:46:46 博主文章分类:网络流 ©著作权 文章标签 #include #define i++ 文章分类 后端开发 ©著作权归作者所有:来自51CTO博客作者fish04的原创作品,请联系作者获取转载授权,否则将追究法律责任 题目描述有 输入输出格式输入格式:文件的第 接下来的 输出格式:两行分别输出最小总效益和最大总效益。输入输出样例输入样例#1:复制52 2 2 1 22 3 1 2 42 0 1 1 12 3 4 3 33 2 1 2 1输出样例#1: 复制514说明一个人只能修一个工件#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include//#include//#pragma GCC optimize(2)using namespace std;#define maxn 20005#define inf 0x7fffffff//#define INF 1e18#define rdint(x) scanf("%d",&x)#define rdllt(x) scanf("%lld",&x)#define rdult(x) scanf("%lu",&x)#define rdlf(x) scanf("%lf",&x)#define rdstr(x) scanf("%s",x)#define mclr(x,a) memset((x),a,sizeof(x))typedef long long ll;typedef unsigned long long ull;typedef unsigned int U;#define ms(x) memset((x),0,sizeof(x))const long long int mod = 1e9 + 7;#define Mod 1000000000#define sq(x) (x)*(x)#define eps 1e-5typedef pair pii;#define pi acos(-1.0)//const int N = 1005;#define REP(i,n) for(int i=0;i<(n);i++)typedef pair pii;inline int rd() { int x = 0; char c = getchar(); bool f = false; while (!isdigit(c)) { if (c == '-') f = true; c = getchar(); } while (isdigit(c)) { x = (x << 1) + (x << 3) + (c ^ 48); c = getchar(); } return f ? -x : x;}ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a%b);}int sqr(int x) { return x * x; }/*ll ans;ll exgcd(ll a, ll b, ll &x, ll &y) { if (!b) { x = 1; y = 0; return a; } ans = exgcd(b, a%b, x, y); ll t = x; x = y; y = t - a / b * y; return ans;}*/bool vis[maxn];int n, m, s, t;int x, y, f, z;int dis[maxn], pre[maxn], last[maxn], flow[maxn];int maxflow, mincost;struct node { int to, nxt, flow, dis;}edge[maxn << 2];int head[maxn], cnt;void addedge(int from, int to, int flow, int dis) { edge[++cnt].to = to; edge[cnt].flow = flow; edge[cnt].dis = dis; edge[cnt].nxt = head[from]; head[from] = cnt;}bool spfa1(int s, int t) { memset(dis, 0x7f, sizeof(dis)); memset(flow, 0x7f, sizeof(flow)); ms(vis);queueq; q.push(s); vis[s] = 1; dis[s] = 0; pre[t] = -1; while (!q.empty()) { int now = q.front(); q.pop(); vis[now] = 0; for (int i = head[now]; i != -1; i = edge[i].nxt) { if (edge[i].flow > 0 && dis[edge[i].to] > dis[now] + edge[i].dis) { dis[edge[i].to] = edge[i].dis + dis[now]; pre[edge[i].to] = now; last[edge[i].to] = i; flow[edge[i].to] = min(flow[now], edge[i].flow); if (!vis[edge[i].to]) { vis[edge[i].to] = 1; q.push(edge[i].to); } } } } return pre[t] != -1;}bool spfa2(int s, int t) { memset(dis, 0x7f, sizeof(dis)); memset(flow, 0x7f, sizeof(flow)); ms(vis); queueq; q.push(s); vis[s] = 1; dis[s] = 0; pre[t] = -1; while (!q.empty()) { int now = q.front(); q.pop(); vis[now] = 0; for (int i = head[now]; i != -1; i = edge[i].nxt) { if (edge[i].flow > 0 && dis[edge[i].to] > dis[now] + edge[i].dis) { dis[edge[i].to] = edge[i].dis + dis[now]; pre[edge[i].to] = now; last[edge[i].to] = i; flow[edge[i].to] = min(flow[now], edge[i].flow); if (!vis[edge[i].to]) { vis[edge[i].to] = 1; q.push(edge[i].to); } } } } return pre[t] != -1;}void mincost_maxflow() { while (spfa1(s, t)) { int now = t; maxflow += flow[t]; mincost += flow[t] * dis[t]; while (now != s) { edge[last[now]].flow -= flow[t]; edge[last[now] ^ 1].flow += flow[t]; now = pre[now]; } }}void maxcost_maxflow() { while (spfa2(s, t)) { int now = t; maxflow += flow[t]; mincost += flow[t] * dis[t]; while (now != s) { edge[last[now]].flow -= flow[t]; edge[last[now] ^ 1].flow += flow[t]; now = pre[now]; } }}int C[104][104];int main(){ // ios::sync_with_stdio(0); n = rd(); mclr(head, -1); cnt = 1; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++)C[i][j] = rd(); } s = 0; t = 2 * n + 2; for (int i = 1; i <= n; i++) { addedge(s, i, 1, 0); addedge(i, s, 0, 0); } for (int i = 1; i <= n; i++) { addedge(i + n, t, 1, 0); addedge(t, i + n, 0, 0); } for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { addedge(i, j + n, 1, C[i][j]); addedge(j + n, i, 0, -C[i][j]); } } int ans1 = 0, ans2 = 0; mincost_maxflow(); ans1 = mincost; mclr(head, -1); cnt = 1; ms(edge); ms(pre); ms(last); mincost = maxflow = 0; for (int i = 1; i <= n; i++) { addedge(s, i, 1, 0); addedge(i, s, 0, 0); } for (int i = 1; i <= n; i++) { addedge(i + n, t, 1, 0); addedge(t, i + n, 0, 0); } for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { addedge(i, j + n, 1, -C[i][j]); addedge(j + n, i, 0, C[i][j]); } } maxcost_maxflow(); ans2 = mincost; cout << ans1 << endl; cout << -ans2 << endl; return 0;} EPFL - Fighting 赞 收藏 评论 分享 举报 上一篇:[HAOI2011]Problem b BZOJ2301 数学 下一篇:Codeforces Round #533 (Div. 2) 部分题解A~D 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 Linux解决port is already allocated 端口已分配问题 在Linux系统中,当你运行Docker容器或其他服务时,如果遇到port is already allocated错误,这意味着你试图绑定到一个已经被其他进程占用的端口。 Docker 错误提示 后端 服务器 Linux AWS费用监控与DingDing告警实战 导言在云计算时代,灵活的资源使用和付费模式是其吸引力之一。然而,为了避免意外高额费用的出现,我们需要对云服务的费用进行监控和预警。AWS提供了强大的Cost Explorer API,可以帮助我们实时监控费用的变化。本文将介绍如何利用AWS Cost Explorer API实现费用监控,并通过DingDing发送告警通知。创建AWS Cost Explorer客户端首先,我们需要创建AWS Co AWS 数据 费用 cost IO流:字符流 (1)文件字符输入流 Reader FileReaderpublic class FileReaderTest1 { public static void main(String[] args) { try { // 1. 创建一个文件字符输入流管道与源文件接通 Reader fr = ne 输出流 数据 字符串 分配问题 费用流 分配问题 费用流 #include #define i++ 洛谷P4014 分配问题(费用流) 题目描述 有 nn 件工作要分配给 nn 个人做。第 ii 个人做第 jj 件工作产生的效益为 c_{ij}cij 。试设计一个将 nn 件工作分配给 nn 个人做的分配方案,使产生的总效益最大。 输入输出格式 输入格式: 文件的第 11 行有 11 个正整数 nn ,表示有 nn 件工作要分配给 c语言 解题 洛谷 洛谷P4014 分配问题 费用流 洛谷P4014 分配问题 费用流 分配问题 【TYVJ】1982 武器分配(费用流) http://tyvj.cn/Problem_Show.aspx?id=1982一眼题。。源向每个人连容量为1,费用为0的边。每个人向一个中转节点na连容量1,费用0的边(你也可以不连,直接连后边的)中转节点na想所有a物品连容量1,费用0的边所有a物品向所有b物品连容量1,费用为(m-n)^2的边... OI tyvj 费用流 #define #include 运输问题 费用流 和luogu的分配问题一样,建边也非常简单,基本和[分配问题]一模一样; #include #define i++ 餐巾计划问题 费用流 餐巾计划问题 费用流 #include #define i++ 分配问题[最小费用最大流] 传送门建超级出点和汇点(st : 0, ed : n*2+1)第i个人对于第i个点, 第j个任务对应第j+n个点,其中c( i++ 最大流 #define [网络流24题] 分配问题 题目链接: "戳我" 最小费用最大流。 代码如下: include include include include include define MAXN 210 define S 0 define T 2 n+1 using namespace std; int n,t=1,c,f; int he 图论——费用流 编程 计算 【wikioi】1913 数字梯形问题(费用流) 1913 数字梯形问题(费用流) OI wikioi 网络流 费用流 #define 【洛谷P4014】【网络流24题】分配问题【费用流】 题目大意:题目大意:https://www.... i++ #include 最大流 #define 费用流 【网络流24题】分配问题 最小最大费用最大流 Description 有n件工作要分配给n个人做。第i 个人做第j 件工作产生的效益为Cij 。试设计一个将 n件工作分配给n个人做的分配方案,使产生的总效益最大。 编程任务: 对于给定的n件工作和n个人,计算最优分配方案和最差分配方案。 Description Description 有n件工作 网络流 费用流 i++ #include ios 【网络流24题】分配问题(二分图最佳匹配)(费用流) 【网络流24题】分配问题 2014年3月11日1,8720 题目描述 Description 有n件工作要分配给n个人做。第i 个人做第j 件工作产生的效益为ij c 。试设计一个将n件工作分配给n个人做的分配方案,使产生的总效益最大。«编程任务:对于给定的n件工作和n个人,计算最优分配方案和最差分 网络流 最小费用最大流 #include i++ #define 【Tyvj1982】武器分配(费用流) 题意:有N个人要从A个物品中各取一个,B个物品中各取一个,选取第i个A类物品和第j个B类物品的费用是(a[i]-b[j])^2 求最小总花费 n<=a,b<=80 a[i],b[i]<=10000 思路:第一题费用流 由源点到每个A类物品连容量为1,费用为0的边 每个B类物品到第一个汇点连容量为1, 费用流 数据 i 【网络流24题】运输问题(费用流)(网络费用流量) 【网络流24题】运输问题 2014年3月7日1,6360 题目描述 Description W 公司有m个仓库和n 个零售商店。第i 个仓库有ai 个单位的货物;第j 个零售商店需要bj个单位的货物。货物供需平衡,即 sum(si)=sum(bj)。从第i 个仓库运送每单位货物到第j 个零售商店的费 最小费用最大流 网络流 i++ #include #define 最小费用流问题 python 最小费用流问题详解 题意: 给一个n个点m条边的有向带权图,q次询问,每次规定每条边的容量为u/v,你需要输出总流量为1时,从点1到点n的最小费用(分数表示),若到达的流量不足为1,则输出NaN;题解:标准费用流模板,但是q的范围是1e5,所以我们要先跑一次费用流,把有用的信息记录下来,即把每一条增广路径的费用记录下来。考虑放缩,同时乘以v,则总流量为v,每条边的容量为u,这是算出来的总费用除以v即为答案。我们可以在 最小费用流问题 python i++ 预处理 权值 【网络流24题】航空路线问题(费用流) 题解: 题目的意思就是找一个环,经过起点终点,使得经过的点最多。 数据范围十分小,如何去做呢,其他点只能经过一次不是很显然的,那么一个点裂成两个点, 边权为一,花费为一,用来记录价值。 算了,很简单的,贴别人题解吧。 最小费用最大流 网络流 数据 其他 【网络流24题】餐巾计划问题(费用流) 【网络流24题】餐巾计划问题 2014年3月8日3,7060 题目描述 Description 一个餐厅在相继的 N 天里,每天需用的餐巾数不尽相同。假设第 i 天需要 ri块餐巾(i=1,2,…,N)。餐厅可以购买新的餐巾,每块餐巾的费用为 p 分;或者把旧餐巾送到快洗部,洗一块需 m 天,其费用 网络流 最小费用最大流 思维题 正确性证明 数据 android 操作屏幕生成视频 随着互联网的兴起,人们更偏向于从视频获取消息,而且现在抖音、快手的视频越来越火,照片做成视频总会吸引大批的粉丝,那么那些好看的视频是怎么做出来的呢,下面一起来跟我看看吧。 一、搜索清爽视频编辑首先我们先去手机应用市场搜索清爽视频编辑,找到之后,我们进入清爽视频编辑。二、如何将照片组成视频点击本地视频,点击——照片选项——点击本地照片,选择自己喜欢的图片可以组成视频。视频当然要配乐,点击声音会有本地 android 操作屏幕生成视频 分屏 视频编辑 搜索 SQL server数据库大小写不区分设置 我们都知道,在平时数据库开发中是不区分大小写的,但那只是我们平时在创建数据库表时的默认设置,或者是查询时的缺省查询默认的是不区分大小写的,下面就让我们来看一下如何创建大小写敏感的数据库表格,或者是在查询时进行区分大小写的查询。 ALTER TABLE 表名 ALTER COLUMN colunnname nvarchar(100) COLLATE Chinese_PRC_CI_AS --不 数据库 大小写 不区分大小写 创建数据库 spring给map赋值properties 1、@RequestMapping注解的功能从注解名称上我们可以看到,@RequestMapping注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系。SpringMVC 接收到指定的请求,就会来找到在映射关系中对应的控制器方法来处理这个请求。2、@RequestMapping注解的位置@RequestMapping标识一个类:设置映射请求的请求路径的初始信息@RequestMapp 请求参数 请求头 数组 axios引用html Axios是一个基于Promise(ES6中用于处理异步的)的HTTP库,用于浏览器和node.js中浏览器中创建XMLHttpRequests从node.js中创建http请求支持Promise API拦截请求和响应转换请求数据和响应数据取消请求自动转换JSON数据客户端支持防御XSRF安装axios:命令行下执行 yarn add axios封装axios模块:src目录下新建ht axios引用html mock axios vue ios unity 贪吃蛇2D 贪吃蛇核心功能是蛇的移动以及蛇的增长。蛇的移动原理:将蛇分为2部分:蛇头和蛇身(分很多个小块),用一个脚本放于蛇头控制蛇的整体移动,脚本中使用一个列表保存蛇身物体,先移动蛇头后移动蛇身,蛇头移动很简单就只是将localPosition朝着玩家控制的方向移动一个单位即可,不过移动之前要保存原来蛇头的位置,因为第一段蛇身需要移动到这个位置。当蛇头移动后,就要遍历蛇身列表,从后往前遍历,遍历到1即可,不 unity 贪吃蛇2D 结点 实例化 贪吃蛇