http://poj.org/problem?id=1275

题意 : 一家24小时营业的超市,要雇出纳员,需要求出超市每天不同时段需要的出纳员数,午夜只需一小批,下午需要多些,希望雇最少的人,给出每小时需要的出纳员的最少数量,R(0),R(1),...,R(23)。R(0)表示从午夜到凌晨1:00所需要出纳员的最少数目;R(1)表示凌晨1:00到2:00之间需要的;以此类推。这些数据每一天都是相同的。有N人申请这工作,申请者 i ,从一个特定的时刻开始连续工作恰好8小时。定义ti(0<=ti<=23)为上面提到的开始时刻,也就是说,如果第i个申请者被录用,他)将从 ti 时刻开始连续工作8小时。

思路 :差分约束,挺难的,看了好多人的题解,才稍微懂一些了,http://972169909-qq-com.iteye.com/blog/1185527,这个神写的不错,,,还有黑书上也有解释

其实说的有点那啥,我一开始也还是没怎么看懂

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <queue> using namespace std; const int INF = ;
struct node
{
int u,v,w ;
int next ;
} map[] ;
bool flag[] ;
int cnt,pre[],cntt[],dist[] ;
int r[],t[] ; void addedge(int u,int v,int w)
{
map[cnt].v = v ;
map[cnt].w = w ;
map[cnt].next = pre[u] ;
pre[u] = cnt++ ;
} void Init()
{
cnt = ;
memset(pre,-,sizeof(pre)) ;
memset(cntt,,sizeof(cntt)) ;
memset(flag,false,sizeof(flag)) ;
} bool spfa(int start)
{
queue<int >Q ;
for(int i = ; i < ; i++)
dist[i] = -INF ;
dist[start] = ;
Q.push(start) ;
flag[start] = true ;
while(!Q.empty())
{
int u = Q.front() ;
Q.pop() ;
if(++cntt[u] > )
return false ;
flag[u] = false ;
for(int i = pre[u] ; i + ; i = map[i].next)
{
int v = map[i].v ,w = map[i].w;
if(dist[v] < dist[u] + w)
{
dist[v] = dist[u] + w ;
if(!flag[v])
{
flag[v] = true ;
Q.push(v) ;
}
}
}
}
return true ;
}
int main()
{
int T ;
scanf("%d",&T) ;
while(T--)
{
for(int i = ; i <= ; i++)
scanf("%d",&r[i]) ;
int N ,s;
scanf("%d",&N) ;
memset(t,,sizeof(t)) ;
for(int i = ; i < N ; i++)
{
scanf("%d",&s) ;
t[s + ]++ ;
}
int low = ,high = N ;
bool flagg = false ;
while(low < high)
{
Init() ;
int mid = (low+high)>> ;
for(int i = ; i <= ; i++)
{
addedge(i-,i,) ;
addedge(i,i-,-t[i]) ;
}
for(int i = ; i <= ; i++)
addedge(i-,i,r[i]) ;
for(int i = ; i <= ; i++)
addedge(i+,i,r[i]-mid) ;
addedge(,,mid) ;
if(spfa())
{
high = mid ;
flagg = true ;
}
else low = mid+ ;
}
if(flagg)
printf("%d\n",high) ;
else printf("No Solution\n") ;
}
return ;
}

POJ 1275 Cashier Employment(差分约束)的更多相关文章

  1. poj 1275 Cashier Employment - 差分约束 - 二分答案

    A supermarket in Tehran is open 24 hours a day every day and needs a number of cashiers to fit its n ...

  2. POJ 1275 Cashier Employment 挺难的差分约束题

    http://poj.org/problem?id=1275 题目大意: 一商店二十四小时营业,但每个时间段需求的雇员数不同(已知,设为R[i]),现有n个人申请这份工作,其可以从固定时间t连续工作八 ...

  3. 图论(差分约束系统):POJ 1275 Cashier Employment

    Cashier Employment Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7651   Accepted: 288 ...

  4. 【POJ1275】Cashier Employment 差分约束

    [POJ1275]Cashier Employment 题意: 超市经历已经提供一天里每一小时需要出纳员的最少数量————R(0),R(1),...,R(23).R(0)表示从午夜到凌晨1:00所需要 ...

  5. POJ1275/ZOJ1420/HDU1529 Cashier Employment (差分约束)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 题意:一商店二十四小时营业,但每个时间段需求的出纳员不同,现有n个人申请这份工作, ...

  6. hdu1529 Cashier Employment[差分约束+二分答案]

    这题是一个类似于区间选点,但是有一些不等式有三个未知量参与的情况. 依题意,套路性的,将小时数向右平移1个单位后,设$f_i$为前$i$小时工作的人数最少是多少,$f_{24}$即为所求.设$c_i$ ...

  7. poj 1275 Cashier Employment

    http://poj.org/problem?id=1275 #include <cstdio> #include <cstring> #include <algorit ...

  8. HDU.1529.Cashier Employment(差分约束 最长路SPFA)

    题目链接 \(Description\) 给定一天24h 每小时需要的员工数量Ri,有n个员工,已知每个员工开始工作的时间ti(ti∈[0,23]),每个员工会连续工作8h. 问能否满足一天的需求.若 ...

  9. Cashier Employment 差分约束

    题意:有一个超市需要一些出纳员,已给出这个超市在各个时间段(0-1,1-2,2-3...共24个时间段)至少需要的出纳员数目,现在前来应聘有n个人,每个人都有一个固定的开始工作的时间,这也意味着从这个 ...

随机推荐

  1. [wordpress]后台自定义菜单字段和使用wordpress color picker

    Wordpress Version 4.4.2 参考链接 插件使用wordpress color picker:Add A New Color Picker To WordPress 后台菜单自定义字 ...

  2. 301页面转向 php

    新建301.php页面,在程序入口文件index.php引用301.php页面 301.php内容如下,仅用于参考: <?php$the_host = $_SERVER['HTTP_HOST'] ...

  3. React组件生命周期过程说明【转】

    实例化 首次实例化 getDefaultProps getInitialState componentWillMount render componentDidMount 实例化完成后的更新 getI ...

  4. WCF图片上传

    WCF越来越流行,俺也在用,这是废话.项目中遇到需要图片上传,但是wcf上传会遇到一些异常,调试了N久,找了好多个解决方案才最终解决.代码直接贴上了 /// <summary> /// 笔 ...

  5. asp搜索两个以上的词的原理

    通常会在许多网站上进行搜索一些内容,要输入两个或两个以上的词,它的原理是这样的: 假设在搜索框search中输入:“asp php” 先得到输入框中的内容:search=request("s ...

  6. jenkins离线安装git插件

    jenkins没有默认安装git,当jenkins无法连接外网的话,安装git插件就是一件很麻烦的事,需要自己去下载插件: 往下拉 这边的插件就是需要自己去下载了,在bing下搜索jenkins gi ...

  7. PHP与Java使用des加密通讯

    http://www.pocketdigi.com/20121112/940.html 原文:http://toptulip.iteye.com/blog/780309 使用php加密字符串,生成密文 ...

  8. asp.net 中使用不同的数据源绑定gridview

    第一种,使用SqlDataReader绑定gridview.代码如下: public SqlDataReader bind() { SqlConnection con = new SqlConnect ...

  9. ###再探Makefile

    使用makefile.以前刚开始接触Makefile的时候,写过一个最简单的Makefile.点击查看Evernote原文. #@author: gr #@date: 2014-07-20 #@ema ...

  10. Maven3.0 服务器配置搭建

    搭建nexus私服,原因很简单,不必多说,本文重点说下最新版的Maven 3.0.x系列的安装步骤. 最新版的网上中文资料很少,参考后都没成功.最后在官网的英文资料中得到答案,成功搞定. 1.确定我们 ...