【NOIP模拟赛】收银员(一道差分约束好题)



/*
s[]表示最优方案的序列中的前缀和,那么s[23]就是最优方案
由题意我们可以列出这样一些式子:
s[i]+s[23]-s[16+i]>=a[i] (i-8<0)
s[i]-s[i-8]>=a[i] (i-8>0)//这两个柿子选一个
b[i]>=s[i]-s[i-1]>=0
然后可以化简为:
s[i]-s[16+i]>=a[i]-s[23]
s[i]-s[i-8]>=a[i]
s[i]-s[i-1]>=0
s[i-1]-s[i]>=-b[i]
这就满足了差分约束的形式了
呢么就让减数向被减数连一条边,权值就是不等式右边的常数
对于s[23]我们二分答案,因此就转化为对于一个既定的s[23],以及按照一定规则建好的图,判断这个条件下是否存在负环
如果存在说明答案太小,如果不存在则答案合法,继续松弛
*/
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#define maxn 30
#define INF 10000000000
using namespace std;
int T,num;
int s=,vis[maxn],inq[maxn],head[maxn],dis[maxn],a[maxn],b[maxn];
struct node{
int to,pre,v;
}e[];
void Insert(int from,int to,int v){
e[++num].to=to;
e[num].v=v;
e[num].pre=head[from];
head[from]=num;
} bool spfa(){//判负环
for(int i=;i<s;i++)dis[i]=-INF,inq[i]=vis[i]=;
dis[s]=,inq[s]=,vis[s]=;
queue<int>q;
q.push(s);
while(!q.empty()){
int u=q.front();q.pop();
inq[u]=;
if(vis[u]>)return ;
for(int i=head[u];i;i=e[i].pre){
int v=e[i].to;
if(dis[v]>=dis[u]+e[i].v)continue;
dis[v]=dis[u]+e[i].v;
vis[v]++;
if(!inq[v])inq[v]=,q.push(v);
}
}
return ;
}
bool check(int s0){
num=;memset(head,,sizeof(head));
for(int i=;i<;i++){
if(i>=)Insert(i-,i,a[i]);
else Insert(i+,i,a[i]-s0);
if(i)Insert(i,i-,-b[i]),Insert(i-,i,);
else Insert(i,s,-b[i]),Insert(s,i,);
}
Insert(,s,-s0),Insert(s,,s0);
return spfa();
}
int main(){
freopen("cashier.in","r",stdin);freopen("cashier.out","w",stdout);
scanf("%d",&T);
while(T--){
int l=,r=;
for(int i=;i<;i++)scanf("%d",&a[i]),l=max(l,a[i]);
for(int i=;i<;i++)scanf("%d",&b[i]),r+=b[i];
if(l>r||!check(r)){puts("-1");continue;}
if(l==){puts("");continue;}
int ans;
while(l<=r){
int mid=(l+r)>>;
if(check(mid))ans=mid,r=mid-;
else l=mid+;
}
printf("%d\n",ans);
}
}
【NOIP模拟赛】收银员(一道差分约束好题)的更多相关文章
- 湖南附中模拟day1 收银员
4.1 题意描述花花家的超市是 24 小时营业的,现在需要招聘收银员.超市每个小时都需要不同数量的收银员,用 ai 表示一天中 i 点到 i + 1 点这一小时内需要的收银员数量,特别地 a23 表示 ...
- noip模拟赛 SAC E#1 - 一道中档题 Factorial
题目背景 数据已修改 SOL君(炉石主播)和SOL菌(完美信息教室讲师)是好朋友. 题目描述 SOL君很喜欢阶乘.而SOL菌很喜欢研究进制. 这一天,SOL君跟SOL菌炫技,随口算出了n的阶乘. SO ...
- noip模拟赛 好元素 哈希表的第一题
这是一道关于 题2好元素 2s [问题描述] 小A一直认为,如果在一个由N个整数组成的数列{An}中,存在以下情况: Am+An+Ap = Ai (1 <= m, n, p < i < ...
- 【HHHOJ】NOIP模拟赛 玖 解题报告
点此进入比赛 得分: \(100+20+100=220\)(还不错) 排名: \(Rank\ 16\) \(Rating\):\(+20\) \(T1\):[HHHOJ263]「NOIP模拟赛 玖」三 ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
- NOIP模拟赛-2018.11.7
NOIP模拟赛 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 编译之前另存一份,听说如果敲 ...
- NOIP模拟赛-2018.11.6
NOIP模拟赛 今天想着反正高一高二都要考试,那么干脆跟着高二考吧,因为高二的比赛更有技术含量(我自己带的键盘放在这里). 今天考了一套英文题?发现阅读理解还是有一些困难的. T1:有$n$个点,$m ...
- 【HHHOJ】NOIP模拟赛 捌 解题报告
点此进入比赛 得分: \(30+30+70=130\)(弱爆了) 排名: \(Rank\ 22\) \(Rating\):\(-31\) \(T1\):[HHHOJ260]「NOIP模拟赛 捌」Dig ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
随机推荐
- 关于linux 安装 python pymssql模块
需要先安装freetds是一个开源的C程序库,它可以实现在Linux系统下访问操作微软的SQL数据库.可以用在Sybase的db-lib或者ct-lib库,在里面也包含了一个ODBC的库.允许许多应用 ...
- Python语言及其应用 第2章
- ACM学习历程—HDU5586 Sum(动态规划)(BestCoder Round #64 (div.2) 1002)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5586 题目大意就是把一段序列里面的数替换成f(x),然后让总和最大. 首先可以计算出初始的总和,以及每 ...
- BZOJ4009:[HNOI2015]接水果
浅谈树状数组与线段树:https://www.cnblogs.com/AKMer/p/9946944.html 题目传送门:https://www.lydsy.com/JudgeOnline/prob ...
- Percona Xtrabackup 备份MySQL 实例(转)
老规矩,开场白,刚开始用mysqldump,备份100G+的数据库,再加上服务器繁忙,备份速度像蜗牛似的,于是寻找更高效的备份方法.网上都说用xtrabackup比较适合备份大的数据库,而且备份效率也 ...
- poj 2000 Gold Coins(水题)
一.Description The king pays his loyal knight in gold coins. On the first day of his service, the kni ...
- Excel特殊格式的列
1.根据前两列显示天时分格式,算出所需时间列的内容=DAY(O2-N2)&"天"&HOUR(O2-N2)&"小时"&MINUTE ...
- spring下,druid,c3p0,proxool,dbcp四个数据连接池的使用和配置
由于那天Oracle的数据连接是只能使用dbcp的数据库连接池才连接上了,所以决定试一下当下所有得数据库连接池连接orcale和mysql,先上代码 配置文件的代码 #================ ...
- linux日常管理-rsync后台服务方式-2
把本地的数据拷贝到远程 这里是个错误,read only.只允许读,不允许写. 改一下远程机器的配置文件 把read only改为no 拷贝到远程成功 tree一下远程机器的目录 ////////// ...
- linux日常管理-系统进程查看工具-ps
查看系统有那些进程 命令有ps aux 和命令 ps -elf USER 哪个用户使用了这个进程 PID 进程的id %CPU 占用CPU的百分比 %MEM 占用内存的百分比 VSZ 虚拟内存的大 ...