1510 出纳员问题

差分约束这个知识点非常锻炼你的代码能力和数学能力
首先设
num[i] 为来应聘的在第i个小时开始工作的人数
r[i] 为第i个小时至少需要的人数
x[i] 为招到的在第i个小时开始工作的人数
0 <= x[i] <= num[i]
x[i] + x[i-1] + …+ x[i-7] >= r[i] (题目中的连续工作8小时)
再设 s[i] = x[1] + … + x[i]
则有: s[i] – s[i-1] >= 0
s[i-1] – s[i] >= –num[i]
s[i] – s[i-8] >= r[i], 8 <= i <= 24
s[i] – s[i+16] >= r[i] – s[24], 1<= i <= 7
还需要添加一个隐藏不等式: s[24] – s[0] >= ans(枚举的答案)
所以从这里可以看出来,这一类的题你必须要学会不挺地转换式子,因为差分约束这个东西就是根据不等式来转的

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<stack>
#include<cstdio>
#include<queue>
#include<map>
#include<vector>
#include<set>
using namespace std;
const int maxn=1010;
const int INF=0x3fffffff;
typedef long long LL;
struct node
{int to;int len;int next;
}ed[500000];
int head[100000];
int r[10000];  //需要的人数
int t[10000]; //应征的人数
int s[10000]; //0---i雇佣的人数
int cnt,n,dis[10000];
queue<int> q;
void adde(int a,int b,int c)//邻接表存储
{                  ed[++cnt].to=b;ed[cnt].len=c;ed[cnt].next=head[a];head[a]=cnt;
}
void ju(int x)
{memset(head,-1,sizeof(head));adde(0,24,x);//走这一步 for(int i=1;i<=24;i++){adde(i-1,i,0);  //连线adde(i,i-1,-t[i]);  //应征}for(int i=1;i<=16;i++){adde(i,i+8,r[i+8]);//所需 }for(int i=17;i<=24;i++){adde(i,i-16,r[i-16]-x);}
}
int vis[110],num[110];
int spfa(int x)
{while(!q.empty()) q.pop();//清空 for(int i=1;i<=25;i++) dis[i]=-INF;dis[0]=0;q.push(0);memset(num,0,sizeof(num));memset(vis,0,sizeof(vis));vis[0]=1;num[0]=1;//清空预处理 while(!q.empty()){int op=q.front();q.pop();vis[op]=0;for(int i=head[op];i!=-1;i=ed[i].next){int tt=ed[i].to;if(dis[tt]<dis[op]+ed[i].len){dis[tt]=dis[op]+ed[i].len;if(!vis[tt]){vis[tt]=1;num[tt]++;if(num[tt]>24) return -1;q.push(tt);}}}}if(dis[24]==x) return 1;else return 0;
}
int main()
{int T,x;scanf("%d",&T);while(T--){memset(t,0,sizeof(t));memset(r,0,sizeof(r));for(int i=1;i<=24;i++){scanf("%d",&r[i]);  //输入需要的人数}scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&x);t[x+1]++; //应征的人数}int i;for(i=0;i<=n;i++){ju(i);if(spfa(i)>0)//满足最短路径 {printf("%d\n",i);break;}}if(i==n+1) {printf("No Solution\n");//无解情况 }}
return 0;
}

1510 出纳员问题相关推荐

  1. [BZOJ1503]郁闷的出纳员(Splay)

    Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常 ...

  2. BZOJ1503:[NOI2004]郁闷的出纳员——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1503 (题面复制的洛谷的,因为洛谷好看) 题目描述 OIER公司是一家大型专业化软件公司,有着数以万 ...

  3. [NOI2004]郁闷的出纳员

    Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的 工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经 ...

  4. M8100-Table T169P: entry 1510 does not exist

    Table T169P: entry 1510 does not exist Message no. M8100 -------------------------- solution: OMRDC

  5. BZOJ1503[NOI2004]郁闷的出纳员——treap

    OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资.如果他心 ...

  6. [BZOJ1503][NOI2004]郁闷的出纳员 无旋Treap

    1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec  Memory Limit: 64 MB Description OIER公司是一家大型专业化软件公司,有着数以万计的员 ...

  7. 权值线段树小结(hdu多校,普通平衡树,郁闷的出纳员)

    之前刷了一点主席树的题目,但是没有系统的做过权值线段树的题目.主席树是多根权值线段树的综合.权值线段树可以解决在总区间里求第k大的问题.在普通的线段树里,我们每一个节点维护的是权值大小.但是在权值线段 ...

  8. 【原创】FlashFXP_4.0.0.1510 值得研究

    FlashFXP_4.0.0.1510 值得研究,朋友公司最近又买了一台服务器,但是接入的是电信宽带(原先的服务器是网通宽带),朋友想用电信宽带作为镜像,从原服务器上同步(下载)一些视频文件,而且要能 ...

  9. NOI 2004 郁闷的出纳员

    Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常 ...

最新文章

  1. 图解VC++6.0和ACE 5.4 开发入门
  2. python3 split()函数
  3. 工业用微型计算机(11)-指令系统(8)
  4. 20以内分数化小数表_如何使用标准正态分布表?
  5. MySql 一条普通的查询语句 你知道如何优雅的使用 前缀索引、索引下推优化查询速度吗?
  6. C++深拷贝与浅拷贝以及写时复制
  7. 重启手机出现机器人加一个叹号_印度科幻脑洞高能!《宝莱坞机器人2.0》内地定档...
  8. bili弹幕姬_B站弹幕姬插件——弹幕日志
  9. Java Agent实战
  10. spnc币吧_CCIEC币-目前是CPUsolo独自开采。CPU服务器独自开采钱包上挖新币教程!...
  11. 中国色 - 中国传统色(zhongguose.com) 页面模仿
  12. iPhone模拟器如何截图呢?
  13. 传奇私服服务器修改沙巴克时间,新手教程:如何修改沙巴克名称
  14. 4.PEB断链隐藏模块
  15. 双非一本考研国防科技大学计算机,【21择校】这些高校不歧视双非,保护一志愿!...
  16. 【uni-app】微信开发者工具注意点(微信小程序)
  17. LINUX音频驱动架构
  18. 用什么软件工具可以一键添加马赛克同时虚化边框背景呢?
  19. 若不用计算机tan35 怎么算,三角函数计算器-三角函数计算器
  20. nginx禁用缓存_如何开启或禁用nginx缓存

热门文章

  1. 啤酒游戏及其牛鞭效应的模拟之二级模式
  2. 简单五子棋算法——初级篇
  3. 转贴:千兆网线的做法,千兆水晶头的做法
  4. 老图搬砖day04.2——JavaScript基础
  5. Flowable高级篇 - Flowable表结构
  6. 数字货币一元夺宝系统:赋予平台代币新价值
  7. 我和 XOP的 醉生梦死
  8. SQL 行转列 列转行 case when 写法
  9. 【愚公系列】2023年05月 网络安全高级班 037.WEB渗透与安全(攻防实验室与靶机说明)
  10. matlab中功率谱密度,功率谱和功率谱密度