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

 #include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 2000
using namespace std;
const int inf=<<;
int r[],t[maxn],s[maxn],dis[maxn];
int n,e;
int sum;
struct node
{
int u,v,w;
}p[maxn];
void add(int u,int v,int w)
{
p[e].u=u;
p[e].v=v;
p[e++].w=w;
}
bool bellman_ford()
{
for(int i=; i<=; i++) dis[i]=inf;
dis[]=;
bool flag;
for(int i=; i<=; i++)
{
flag=false;
for(int j=; j<e; j++)
{
if(dis[p[j].v]>dis[p[j].u]+p[j].w)
{
dis[p[j].v]=dis[p[j].u]+p[j].w;
flag=true;
}
}
if(!flag) break;
}
if(flag) return false;
else return true;
}
void buil(int x)
{
e=;
int j;
for(j=; j<=; j++)
{
int i=(j+)%;
if(i>j)
{
add(i,j,-r[i]);
}
else if(i<j)
{
add(i,j,x-r[i]);
}
}
add(,,-x);
} void bear(int r,int l)
{
int low=r,high=l;
while(low<=high)
{
//printf("%d\n",sum);
int mid=(low+high)/;
buil(mid);
if(bellman_ford())
{
sum=mid;
high=mid-;
}
else
low=mid+;
}
} int main()
{
int m,x;
scanf("%d",&m);
while(m--)
{
for(int i=; i<=; i++)
{
scanf("%d",&r[i]);
}
scanf("%d",&n);
memset(t,,sizeof(t));
for(int i=; i<n; i++)
{
scanf("%d",&x);
t[x+]++;
}
e=;
for(int i=; i<=; i++)
{
add(i-,i,t[i]);
add(i,i-,);
}
sum=-;
bear(,n);
if(sum==-)
printf("No Solution\n");
else
printf("%d\n",sum);
}
return ;
}

poj 1275 Cashier Employment的更多相关文章

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

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

  2. POJ 1275 Cashier Employment(差分约束)

    http://poj.org/problem?id=1275 题意 : 一家24小时营业的超市,要雇出纳员,需要求出超市每天不同时段需要的出纳员数,午夜只需一小批,下午需要多些,希望雇最少的人,给出每 ...

  3. 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 ...

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

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

  5. POJ - Problem 1275 - Cashier Employment

    · 对于差分约束,题目要求求什么便设什么,令$Sum[i]$表示由$0 ~ i$的雇佣人数. · 要充分利用题目所给条件,令$Have[i]$表示i时刻申报的人数,$Need[i]$表示i时刻需要的人 ...

  6. HDU [1529] || POJ [P1275] Cashier Employment

    经典的差分约束+二分答案. 本题的难点在于如何建图. 设x[i] 表示第i个小时可以开始工作的有多少个人. num[i] 表示第i个小时最少需雇佣多少人. s[i] 表示1...i小时实际开始工作的有 ...

  7. 【POJ 1275】 Cashier Employment(差分约束系统的建立和求解)

    [POJ 1275] Cashier Employment(差分约束系统的建立和求解) Cashier Employment Time Limit: 1000MS   Memory Limit: 10 ...

  8. POJ1275 Cashier Employment[差分约束系统 || 单纯形法]

    Cashier Employment Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7997   Accepted: 305 ...

  9. 【POJ1275】Cashier Employment 差分约束

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

随机推荐

  1. uva12118

    一开始以为直接算联通块个数就行了 后来发现还得分联通块里的奇点... 还要注意m = 0的情况... #include<iostream> #include<algorithm> ...

  2. hdu4010 Query On The Trees

    Problem Description We have met so many problems on the tree, so today we will have a query problem ...

  3. PHP学习之[第11讲]新浪微博开放平台 PHP 与 OAuth 接口(1)

    我是下载的微博最新的API练习了一下认证过程.

  4. 遇到sql server的问题时如何排查

    The First Things I Look At On A SQL Server和Page2介绍了遇到sql server的问题时如何排查问题,Display Code列出了sql代码. 包括如下 ...

  5. mysql 字符串类型数字排序

    排序字段+0,类似  Java 把 其他类型转换成字符串 比如 +“”: SELECT    b.tag_value AS NAME,    sum(b.uv) ASVALUE FROM    met ...

  6. iOS 关于枚举的使用

    枚举值 它是一个整形(int)  并且,它不参与内存的占用和释放,枚举定义变量即可直接使用,不用初始化. 在代码中使用枚举的目的只有一个,那就是增加代码的可读性. 使用: 枚举的定义如下: typed ...

  7. Oracle EBS 入门

    Oracle EBS 入门Oracle EBS全称是Oracle 电子商务套件(E-Business Suit),是在原来Application(ERP)基础上的扩展,包含ERP(企业资源计划管理). ...

  8. 《Android开发艺术探索》读书笔记 (11) 第11章 Android的线程和线程池

    第11章 Android的线程和线程池 11.1 主线程和子线程 (1)在Java中默认情况下一个进程只有一个线程,也就是主线程,其他线程都是子线程,也叫工作线程.Android中的主线程主要处理和界 ...

  9. Linux 基本命令(持续更新ing)

    cd -> 变换路径                        //文件一般存在/var/路径下,var为可修改存储盘 ls -> 列出所有隐藏文件与相关文件的属性   #ls -al ...

  10. Swift - 29 - 参数的默认值

    // 参数设置了默认值之后, 在调用的时候, 可以写这个参数 // 在参数前面添加"_", 表示取消外部参数名, 但还是建议使用苹果默认格式 func sayHello(nickN ...