转载自:http://vawait.com/uvalive-5843/

题意:

给出n个工人,给出m个命令,每条命令给出这条命令的最早开始时间、最晚结束时间和完成这条命令所需要的时间,求出一种方案使得完成时间最早。

思路:

源点到每个工作添加流为工作时间,从工作到每个时间点添加流为1,从每个时间点到汇点添加流为工人数目。

代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<string>
#include<map>
#include<set>
#include<vector>
#include<queue>
#include<stack>
using namespace std;
#define rep(i, a, b) for (int i = (a); i <= (b); ++i)
#define red(i, a, b) for (int i = (a); i >= (b); --i)
#define clr( x , y ) memset(x,y,sizeof(x))
#define sqr(x) ((x) * (x))
#define mp make_pair
#define pb push_back
typedef long long lint;
int t , n , m , sum , s[110] , d[110] , w[110];
bool v[110][510];
int a[750] , vh[750] , h[750];struct nodd
{int y , d , n;
} b[300000];void add(int x,int y,int d)
{b[++t].y = y; b[t].d = d;b[t].n = a[x]; a[x] = t;b[++t].y = x; b[t].d = 0;b[t].n = a[y]; a[y] = t;
}int sap(int t,int d)
{int minh = 650 , max = d , x , y;if ( t == 610 ) return d;for ( int p = a[t]; p; p = b[p].n ) if ( b[p].d ) {y = b[p].y;if ( h[y] + 1 == h[t] ) {x = sap( y , max > b[p].d ? b[p].d : max );b[p].d -= x; b[ p ^ 1 ].d += x;max -= x; if ( !max || h[0] > 650 ) return d - max;}if ( h[y] < minh ) minh = h[y];}if ( max == d ) {if ( !( -- vh[h[t]] ) ) h[0] = 660;vh[ h[t] = minh + 1 ] ++;}return d - max;
}void init()
{scanf("%d%d",&n,&m);rep(i,1,m) scanf("%d%d%d",&s[i],&w[i],&d[i]);clr( v , 0 );clr( a , 0 );clr( h , 0 );clr( vh , 0 ); vh[0] = 700;sum = 0; t = 1;rep(i,1,m) sum += w[i];rep(i,1,m)rep(j,s[i],d[i]-1) add( i + 500 , j , 1 );rep(i,1,m) add( 0 , i + 500 , w[i] );rep(i,1,500) add( i , 610 , n );
}void work()
{while ( h[0] < 610 ) sum -= sap( 0 , 10000000 );if ( sum ) {puts("0");return;}rep(i,1,m)for ( int p = a[i+500]; p ; p = b[p].n ) if ( !b[p].d ) v[i][b[p].y] = 1;vector < int > g[110];rep(i,1,m) {rep(j,1,500) if ( v[i][j] && !v[i][j-1] ) {int x = j + 1;while ( v[i][x] ) x ++;g[i].pb( j );g[i].pb( x );}}rep(i,1,m) {int x = g[i].size();printf("%d",x/2);rep(j,0,x-1) printf(" %d",g[i][j]);puts("");}
}int main()
{int t;cin >> t;while ( t -- ) {init();work();}return 0;
}

uvalive5843(最大流)相关推荐

  1. stream流对象的理解及使用

    我的理解:用stream流式处理数据,将数据用一个一个方法去 . (点,即调用) 得到新的数据结果,可以一步达成. 有多种方式生成 Stream Source: 从 Collection 和数组 Co ...

  2. 如何判断飞机的年限_技术流带你鉴定前风挡玻璃更换,不再使用日期判断!

    ​ 这又是一篇关于前风挡玻璃鉴定的文章,我记得在二手车鉴定微信公众号里面已经发布好几篇这样的文章了,当然每篇文章的住重点不同,今天这一篇应该是完结篇,它们在一起能组成一套玻璃更换系列专题课程: 我们回 ...

  3. SpringCloud Alibaba微服务实战(五) - Sentinel实现限流熔断

    什么是Sentinel? 请查看文章:SpringCloud Alibaba微服务实战(一) - 基础环境搭建 构建服务消费者cloud-sentinel进行服务调用 服务创建请查看文章:Spring ...

  4. 文件流处理流式处理大数据处理

    20210315 https://www.yuque.com/7125messi/wydusr/wweetn 42-(重要重要重要)加速pandas(Modin和pandarallel) 重点 htt ...

  5. javaSE8的流库总结

    前言 本篇博客对 java 8 的流库进行一个总结 1. 从迭代到流 在处理集合时,我们通常会迭代遍历它的元素,并在每个元素上执行某项操作,列如假设我们想统计某本书的所有长单词数(单词长度大于10): ...

  6. CUDA 7流简化并发

    CUDA 7流简化并发 异构计算是指有效使用系统中的所有处理器,包括CPU和GPU.为此,应用程序必须在多个处理器上同时执行功能.CUDA应用程序通过在流(按顺序执行的命令序列)中,执行异步命令来管理 ...

  7. GPU编程和流式多处理器(二)

    GPU编程和流式多处理器(二) 2. 整数支持 SM具有32位整数运算的完整补充. • 加法运算符的可选否定加法 • 乘法与乘法加法 • 整数除法 • 逻辑运算 • 条件码操作 • to/from浮点 ...

  8. GPU编程和流式多处理器

    GPU编程和流式多处理器 流式多处理器(SM)是运行CUDA内核的GPU的一部分.本章重点介绍SM的指令集功能. 流式多处理器(SM)是运行我们的CUDA内核的GPU的一部分.每个SM包含以下内容. ...

  9. Cuda Stream流 分析

    Cuda Stream流分析 Stream 一般来说,cuda c并行性表现在下面两个层面上: • Kernel level • Grid level Stream和event简介 Cuda stre ...

最新文章

  1. DNA测序,第一代DNA测序,第二代DNA测序,第三代DNA测序,sanger法
  2. CMD用什么命令可以删除服务?
  3. adb查看某个文件是否存在_动能定理是否存在某个方向的分量方程式?
  4. 用非递归方式实现二叉树后序遍历
  5. 超好的Git学习网站
  6. php面试题接口方面,php面试题6 - osc_xb4v1nhl的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. python如何写二进制乘法_使用python写乘法口诀表
  8. 2019 CCF 推荐 会议 列表
  9. Intellij idea 插件 | 超越鼓励师 吐槽
  10. Tinder活号技术在YouTube上面居然有用模拟器和浏览器玩明白了使用谷歌下载的
  11. 旅游吧!我在这里—旅游相册POI搜索:找回你的足迹
  12. python银行账户资金交易管理_Python实现银行账户资金交易管理系统
  13. 我们为什么要学习保险知识
  14. mxGraph Web在线绘图
  15. 项目 | Java+PhantomJs爬虫实战——半次元 下载高清原图
  16. 《辛雷学习方法》读书笔记——第二章 心态
  17. weka中的arff格式数据
  18. sql2005数据完整性之约束和规则
  19. 137.菜单悬停放大特效
  20. 看涨期权和看跌期权的图解

热门文章

  1. 公众号质量改进调查问卷
  2. Python脚本-批量修改文件名
  3. VTK修炼之道33:边缘检测_Sobel算子
  4. delphi 中listview的右键菜单处理
  5. Javascript 类型转换
  6. Mybatis Plus为什么提供BaseMapper和IService两个相似CRUD操作的接口?
  7. 一文看懂Python(九)-----可变参数函数
  8. STM32F4 HAL库开发 --时钟使能和配置
  9. 日常生活小技巧 -- U盘拷贝时提示文件过大问题
  10. 嵌入式文件系统镜像制作及烧写