题解:

网络流

用一个离散化

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int INF=<<;
int si[],ei[],ni[],ti[],head[],h[],num[];
int a[],n,m,sum;
int cnt,ans,c;
struct edge
{
int x,y,flow,nxt,op;
}em[];
void add(int x,int y,int c)
{
em[++cnt].x=x;
em[cnt].y=y;
em[cnt].flow=c;
em[cnt].nxt=head[x];
head[x]=cnt;
em[cnt].op=cnt+;
cnt++;
em[cnt].x=y;
em[cnt].y=x;
em[cnt].flow=;
em[cnt].nxt=head[y];
head[y]=cnt;
em[cnt].op=cnt-;
}
int dfs(int x,int flow)
{
if(x==n+c)
return flow;
int temp=flow,pos=n+c+;
for (int j=head[x];j;j=em[j].nxt)
{
int y=em[j].y;
int w=em[j].flow;
if (h[x]==h[y]+&&w>)
{
int temp_flow=dfs(y,min(temp,w));
temp-=temp_flow;
em[j].flow-=temp_flow;
em[em[j].op].flow+=temp_flow;
if (!temp||h[]==n+c+)
return flow-temp;
}
if (w>&&h[y]<pos)pos=h[y];
}
if (temp==flow)
{
num[h[x]]--;
if (num[h[x]]==)h[]=n+c+;
else
{
h[x]=pos+;
num[h[x]]++;
}
}
return flow-temp;
}
void isap()
{
memset(h,,sizeof(h));
memset(num,,sizeof(num));
while (h[]<n+c+)ans+=dfs(,INF);
if (ans==sum)puts("Yes");
else puts("No");
}
int main()
{
while (~scanf("%d%d",&n,&m))
{
sum=;
int tot=;
cnt=;
memset(head,,sizeof(head));
for (int i=;i<=n;i++)
{
scanf("%d%d%d%d",si+i,ni+i,ei+i,ti+i);
a[++tot]=si[i];
a[++tot]=ei[i];
add(,i,ni[i]*ti[i]);
sum+=ni[i]*ti[i];
}
sort(a+,a+tot+);
c=;
for (int i=;i<=tot;i++)
if (a[c]!=a[i])a[++c]=a[i];
for (int i=;i<c;i++)
{
int num=(a[i+]-a[i])*m;
add(n+i,n+c,num);
}
for (int i=;i<=c-;i++)
for (int j=;j<=n;j++)
if (si[j]<=a[i]&a[i+]<=ei[j])add(j,i+n,INF);
ans=;
isap();
}
return ;
}

hdu2883的更多相关文章

  1. 【最大流】【HDU2883】【kebab】

    题意: 有一个烧烤机,每次最多能烤 m 块肉,现在有 n 个人来买烤肉,每个人到达时间为 si,离开时间为 ei,点的烤肉数量为 ci,点的烤肉所需烘烤时间为 di, 每个人要烤的肉可以分成若干份在同 ...

  2. kebab HDU2883

    题意:现在有n个人要烤肉,有m个烤肉架,然后给出每个人的烤肉开始时间si,结束时间ei,以及要烤肉的串数num,还有拷一串的时间ti,然后问你能不能满足所有人的要求. 为3572的进阶题 每个人为一个 ...

  3. hdu2883 最大流,判断满流 优化的SAP算法

    这是09年的多校联赛题目,比10年的难度要大.如果没做过hdu3572,建议先去做.有了解题思维再来做这题. 这题与hdu3572类似.但是1 <= si < ei <= 1,000 ...

  4. HDU2883 kebab(最大流判断满流 + 离散化 + 区间化点)

    [题意]: 有一个烤箱,烤箱在一个时刻最多考M个肉串,N个顾客,每个顾客有属性s,n,e,t s是来的时间,n是想要的肉串数量,e是最晚离开的时间,t是烤的时间(几分熟). 顾客的烤肉可以分开烤,比如 ...

  5. 最大流任务调度+离散化——hdu2883

    思想就是把时间段离散化,然后用个点来表示一段时间 #include<iostream> #include<cstdio> #include<cstring> #in ...

  6. 【HDU2883】kebab——最大流

    题目链接 把"时间粒子"作为最大流的计算结果 设置超级源点为 0 顾客点范围为 1 - 204 时间点 205 - 610 超级汇点 615 超级源点与所有顾客连线,容量为需求的烤 ...

随机推荐

  1. 双态运维分享之:业务场景驱动的服务型CMDB

    最近这几年,国内外CMDB失败的案例比比皆是,成功的寥寥可数,有人质疑CMDB is dead?但各种业务场景表明,当下数据中心运维,CMDB依然是不可或缺的一部分,它承载着运维的基础,掌握运维的命脉 ...

  2. logging.basicConfig参数简介

    通过logging.basicConfig函数对日志的输出格式及方式做相关配置 import logging logging.basicConfig(level=logging.DEBUG, form ...

  3. (2.13)Mysql之SQL基础——触发器

    (2.13)Mysql之SQL基础——触发器 关键词:Mysql触发器 1.一般形式 -- 0.查看触发器[1]SHOW TRIGGERS;[2]SELECT * FROM `information_ ...

  4. DOM2和DOM3读书笔记

    二刷<高程>做的笔记,没什么技术含量就不发到首页啦!~DOM1级主要定义HTML和XML文档底层结构,DOM2和DOM3在这个结构基础上引入更多交互能力,也支持更高级的XML特性.DOM2 ...

  5. ABP常见问题

    System.Data.SqlClient.SqlException (0x80131904): 'OFFSET' 附近有语法错误 解决方案:最新的ABP默认支持的是sql2012以上的版本,对于之前 ...

  6. vue项目多页配置

    文件目录 ├─build ├─config ├─dist │ └─static │ ├─css │ ├─img │ └─js ├─src │ ├─assets │ │ ├─img │ │ ├─js │ ...

  7. FM/AM收音机原理

    收音机这东西很早就开始用了,但一直都没有了解过它的原理,听说是很简单.下面记录一些笔记. 1. 基本概念 收音机是一种小型的无线电接收机,主要用于接受无线电广播节目,收听无线电发射台.首先说一下收音机 ...

  8. WdatePicker设置日期范围

    设置 结束日期不超过当天日期:设置 开始日期不超过结束日期:设置 开始日期默认显示当月1日的日期,结束日期显示当天日期?<label>开始日期:</label><inpu ...

  9. 20145104张家明 《Java程序设计》第2周学习总结

    20145104张家明 <Java程序设计>第2周学习总结 教材学习内容总结 本周学习了第三章的内容,看过之后呢,学的和c语言是相通的,看起来就是非常的顺畅,自我感觉良好,第三章主要讲了一 ...

  10. 20145204 《Java程序设计》第9周学习总结

    20145204 <Java程序设计>第9周学习总结 教材学习内容总结 JDBC Java语言访问数据库的一种规范,是一套API.JDBC (Java Database Connectiv ...