题目链接

对于每一个 \(i\) 可以看作一个管道。赋予三个信息:

  • \(\text{minIn}_i\) 表示至少要从上一家 \(i - 1\) 得到连接数,才能正常供给 \(i\) 城市
  • \(\text{minOut}_i\) 最坏情况下最少给下一家 \(i + 1\) 多少连接数
  • \(\text{maxOut}_i\) 表示最多能给下一家 \(i + 1\) 多少连接数

三个变量维护完毕,我们发现我们可以通过某种方法合并两个相邻的管道,最后剩下一个管道,只需自检查 \(\text{minIn} \le \text{minOut}\) 即可(在最低限度下自我循环传输)。

合并需要分类讨论,假如合并 \(x, y\)。

  • 首先必须满足 \(x.maxOut \ge y.minIn\),不然无论何时都满足不了。
  • 如果 \(x.minOut \le y.minIn\),那么合并后的最低需求会变大,最大输出量也会被 \(x.maxOut\) 而限制
  • 否则,最低输出量会被提高(或不变),最大输出量同样受到限制。
#include <cstdio>
#include <iostream> using namespace std; const int N = 1000005; int n, a[N], b[N]; struct Pipe{
int minIn, minOut, maxOut;
}; Pipe get(int x, int y) {
if (x <= y) return (Pipe) { 0, y - x, y };
else return (Pipe) { x - y, 0, y };
} Pipe merge(Pipe x, Pipe y) {
if (x.maxOut < y.minIn) return (Pipe) { -1, -1, -1 };
if (x.minOut <= y.minIn) return (Pipe) { x.minIn + y.minIn - x.minOut, y.minOut, min(y.maxOut, y.minOut + x.maxOut - y.minIn) };
else return (Pipe) { x.minIn, min(y.maxOut, y.minOut + x.minOut - y.minIn), min(y.maxOut, y.minOut + x.maxOut - y.minIn) };
} int main() {
int T; scanf("%d", &T);
while (T--) {
scanf("%d", &n);
for (int i = 1; i <= n; i++) scanf("%d", a + i);
for (int i = 1; i <= n; i++) scanf("%d", b + i);
Pipe cur = get(a[1], b[1]);
bool ok = true;
for (int i = 2; i <= n; i++) {
cur = merge(cur, get(a[i], b[i]));
if (cur.minIn == -1) { ok = false; break; }
}
if (cur.minOut < cur.minIn) ok = false;
puts(ok ? "YES" : "NO");
}
return 0;
}

CF1373F Network Coverage的更多相关文章

  1. Codeforces 1373F - Network Coverage(模拟网络流)

    Codeforces 题面传送门 & 洛谷题面传送门 提供一个模拟网络流的题解. 首先我们觉得这题一脸可以流的样子,稍微想想可以想到如下建图模型: 建立源点 \(S,T\) 和上下两排点,不妨 ...

  2. AAU

    AAU (Active Antenna Unit) In the MBB (Mobile Broadband) era, the astonishing growth in data traffic ...

  3. hdu-5681 zxa and wifi(dp)

    题目链接: zxa and wifi Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Othe ...

  4. ARVE: Augmented Reality Applications in Vehicle to Edge Networks

    ARVE:车辆到边缘网中的增强现实应用 本文为SIGCOMM 2018 Workshop (Mobile Edge Communications, MECOMM)论文. 笔者翻译了该论文.由于时间仓促 ...

  5. On the way to the park Gym - 101147I 几何

    http://codeforces.com/gym/101147/problem/I I. On the way to the park time limit per test 5 seconds m ...

  6. android NDK 神经网络API——是给tensorflow lite调用的底层API,应用开发者使用tensorflow lite即可

    eural Networks API In this document show more Understanding the Neural Networks API Runtime Neural N ...

  7. 哈理工2015暑假训练赛 zoj 2078Phone Cell

    Phone CellTime Limit:10000MS    Memory Limit:32768KB    64bit IO Format:%lld & %llu SubmitStatus ...

  8. Smart internet of things services

    A method and apparatus enable Internet of Things (IoT) services based on a SMART IoT architecture by ...

  9. 【论文速读】Fangfang Wang_CVPR2018_Geometry-Aware Scene Text Detection With Instance Transformation Network

    Han Hu--[ICCV2017]WordSup_Exploiting Word Annotations for Character based Text Detection 作者和代码 caffe ...

随机推荐

  1. 1. 线性DP 120. 三角形最小路径和

    经典问题: 120. 三角形最小路径和  https://leetcode-cn.com/problems/triangle/ func minimumTotal(triangle [][]int) ...

  2. 创建Grafana监控视图

    前言 Grafana允许查询,可视化,警报和了解指标,无论它们存储在哪里. 可视化:具有多种选项的快速灵活的客户端图.面板插件提供了许多不同的方式来可视化指标和日志. 动态仪表盘:使用模板变量创建动态 ...

  3. [head first 设计模式] 第一章 策略模式

    [head first 设计模式] 第一章 策略模式 让我们先从一个简单的鸭子模拟器开始讲起. 假设有个简单的鸭子模拟器,游戏中会出现各种鸭子,此系统的原始设计如下,设计了一个鸭子超类,并让各种鸭子继 ...

  4. ci爬坑

    1.row_array() 问题描述:没有数据返回NULL,直接foreach,报错

  5. Camtasia绿幕素材的视频合成

    随着科技和互联网的快速发展,让越来越多的人喜欢上了视频的各项制作,那么怎么让两个视频进行合成并一起播放呢?操作很简单,下面来讲解具体的操作步骤.小编选用的是Camtasia2019版本的视频编辑软件进 ...

  6. python中操作excel数据 封装成一个类

    本文用python中openpyxl库,封装成excel数据的读写方法 from openpyxl import load_workbook from openpyxl.worksheet.works ...

  7. uniapp兄弟组件如何修改数据?一看就废!

    1. 如A组件里有个num = 10 并需要在生命周期函数created里通过uniapp提供的uni.$on方法来注册全局事件,并加一个形参.( uni.$on( '自定义事件名') , 形参 =& ...

  8. python批量爬取猫咪图片

    不多说直接上代码 首先需要安装需要的库,安装命令如下 pip install BeautifulSoup pip install requests pip install urllib pip ins ...

  9. iOS中字符串转float类型失真的解决办法

    最近在做项目的过程中,偶然遇到了一个问题,就是字符串和浮点类型的转换.以往都是通过[NSString stringWithFormat:@"%d",goodcount]这种方式转换 ...

  10. python-交互模式

    1.打开python交互式命令行: Windows+R→回车→输入python 如图 输入python进入交互模式,相当于启动了python解释器,输入一行代码就执行一行代码,可以用交互模式去验证每一 ...