• CF1373F Network Coverage


    显然考虑如果我们只是一条链的话,那么显然是很好判断的。
    但是现在是一个环,我们思考其实我们的关键问题是不知道 \(a_1\)\(a_n\) 流了多少过来。
    我们发现其有单调性,我们可以直接二分。

    #include<iostream>
    #include<cstdio>
    #define ll long long 
    #define N ((ll)1e6 + 5)
    
    int n,m,a[N],b[N],c[N],Q,ans;
    
    inline int check(int x){
    	for(int i = 1;i <= n;++i)
    	c[i] = a[i];
    	int res = b[1] - x;//向右流的流 
    	c[1] = std::max(0,a[1] - x);//c:需要的 
    	for(int i = 2;i <= n;++i){
    		c[i] -= res;
    		c[i] = std::max(c[i],0);
    		if(c[i] > b[i])return 2;//流量不够用
    		res = b[i] - c[i]; 
    		c[i] = 0;
    	}
    	if(c[1] > res)return 1;
    	return 0;
    }
    
    int T;
    
    #define mid ((l + r) >> 1)
    
    int main(){
    	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]);
    		int l = 0,r = b[1];
    		int flg = 0;
    		while(l <= r){
    			int lim = check(mid);
    			if(!lim){
    				flg = 1;
    				puts("YES");
    				break;
    			}
    			if(lim == 2){
    				r = mid - 1;
    			}
    			if(lim == 1){
    				l = mid + 1;
    			}
    		}
    		if(!flg)
    		puts("NO");
    	}
    }
    
  • 相关阅读:
    图片360度旋转特效
    css背景图片拉伸
    圆角带箭头的提示框css实现
    CSS3/jQuery自定义弹出窗口
    EasyUI Editable Tree
    easyui datagrid自定义操作列
    jQuery EasyUI实现关闭全部tabs
    easyui获取当前点击对象tabs的title
    jQuery easyui刷新当前tabs
    EasyUI项目学习
  • 原文地址:https://www.cnblogs.com/dixiao/p/15424998.html
Copyright © 2020-2023  润新知