/*
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模拟赛】收银员(一道差分约束好题)的更多相关文章

  1. 湖南附中模拟day1 收银员

    4.1 题意描述花花家的超市是 24 小时营业的,现在需要招聘收银员.超市每个小时都需要不同数量的收银员,用 ai 表示一天中 i 点到 i + 1 点这一小时内需要的收银员数量,特别地 a23 表示 ...

  2. noip模拟赛 SAC E#1 - 一道中档题 Factorial

    题目背景 数据已修改 SOL君(炉石主播)和SOL菌(完美信息教室讲师)是好朋友. 题目描述 SOL君很喜欢阶乘.而SOL菌很喜欢研究进制. 这一天,SOL君跟SOL菌炫技,随口算出了n的阶乘. SO ...

  3. noip模拟赛 好元素 哈希表的第一题

    这是一道关于 题2好元素 2s [问题描述] 小A一直认为,如果在一个由N个整数组成的数列{An}中,存在以下情况: Am+An+Ap = Ai (1 <= m, n, p < i < ...

  4. 【HHHOJ】NOIP模拟赛 玖 解题报告

    点此进入比赛 得分: \(100+20+100=220\)(还不错) 排名: \(Rank\ 16\) \(Rating\):\(+20\) \(T1\):[HHHOJ263]「NOIP模拟赛 玖」三 ...

  5. 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...

  6. NOIP模拟赛-2018.11.7

    NOIP模拟赛 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 编译之前另存一份,听说如果敲 ...

  7. NOIP模拟赛-2018.11.6

    NOIP模拟赛 今天想着反正高一高二都要考试,那么干脆跟着高二考吧,因为高二的比赛更有技术含量(我自己带的键盘放在这里). 今天考了一套英文题?发现阅读理解还是有一些困难的. T1:有$n$个点,$m ...

  8. 【HHHOJ】NOIP模拟赛 捌 解题报告

    点此进入比赛 得分: \(30+30+70=130\)(弱爆了) 排名: \(Rank\ 22\) \(Rating\):\(-31\) \(T1\):[HHHOJ260]「NOIP模拟赛 捌」Dig ...

  9. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

随机推荐

  1. 十九 Django框架,发送邮件

    全局配置settings.py EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' #发送邮件引擎 EMAIL_USE_TLS ...

  2. appium-DesiredCapability详解与实战

    DesiredCapability对启动app至关重要,是启动app前的准备工作.如果配置错误,app不会成功启动. DesiredCapability有appium公共健值对.Android专有和I ...

  3. poj3630 Phone List (trie树模板题)

    Phone List Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 26328   Accepted: 7938 Descr ...

  4. poj2001Trie树模板

    #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #inc ...

  5. BZOJ4976: [Lydsy1708月赛]宝石镶嵌

    BZOJ4976: [Lydsy1708月赛]宝石镶嵌 https://lydsy.com/JudgeOnline/problem.php?id=4976 分析: 本来是从\(k\le 100\)这里 ...

  6. bzoj 3796: Mushroom追妹纸 AC自动机+后缀自动机+dp

    题目大意: 给定三个字符串s1,s2,s3,求一个字符串w满足: w是s1的子串 w是s2的子串 s3不是w的子串 w的长度应尽可能大 题解: 首先我们可以用AC自动机找出s3在s1,s2中出现的位置 ...

  7. CSS禁止鼠标事件---pointer-events:none

    pointer-events:none顾名思意,就是鼠标事件拜拜的意思.元素应用了该CSS属性,链接啊,点击啊什么的都变成了“浮云牌酱油”.

  8. Operating System-Thread(2) Multi-Process-Parallel vs Multi-Thread-Parallel

    本文主要介绍线程的模型 一.Multi-Process-Parallel vs Multi-Thread-Parallel 多进程的并行:CPU在多个进程之间进行切换,系统给人一种多个进程在并行执行的 ...

  9. 洛谷【P2005】A/B Problem II

    题目传送门:https://www.luogu.org/problemnew/show/P2005 高精除低精:https://www.cnblogs.com/AKMer/p/9724556.html ...

  10. category extension

    1 category 分类,只能添加方法,添加的方法成为原来类的一部分,达到扩展类的目的,可以被子类继承 主要给没有源代码的类 添加方法,团队合作项目互不影响,不该动原有类的基础上添加方法 self ...