zoukankan      html  css  js  c++  java
  • CF1332A Exercising Walk 题解

    CSDN同步

    原题链接

    简要题意:

    多组数据,每次起点为 (x,y),需要上走 (a) 步,下走 (b) 步,左走 (c) 步,右走 (d) 步,问每次的坐标 (x,y) 是否均能满足 (x1 leq x leq x2)(y1 leq y leq y2).

    因为没有规定走的顺序,所以我们采用这样的策略:

    尽量让 (a,b) 抵消,(c,d) 抵消。

    即,起点为 (x,y) ,则 最优的终点 应当是 (x-a+b,y-c+d).

    只要判断这个是否在范围内即可。

    但是,良心的出题人在样例给我们一个特殊边界。

    如果 (x = x1 = x2)(a ot = 0)(b ot = 0),你在行上没有活动空间,肯定走不成。

    列同理。

    时间复杂度:(O(T)).

    实际得分:(100pts).

    #pragma GCC optimize(2)
    #include<bits/stdc++.h>
    using namespace std;
    
    inline int read(){char ch=getchar();int f=1;while(ch<'0' || ch>'9') {if(ch=='-') f=-f; ch=getchar();}
    	int x=0;while(ch>='0' && ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x*f;}
    
    int main(){
    	int T=read(),a,b,c,d,x,y,x1,y1,x2,y2;
    	while(T--) {
    		a=read(),b=read(),c=read(),d=read();
    		x=read(),y=read(),x1=read(),y1=read(),x2=read(),y2=read();
    		if(a && b && x==x1 && x==x2 || c && d && y==y1 && y==y2) puts("NO"); //先判边界
    		else {
    			x+=b-a; y+=d-c;
    			if(x1<=x && x<=x2 && y1<=y && y<=y2) puts("YES");
    			else puts("NO"); //一般情况
    		}
    	}
    	return 0;
    }
    
    
  • 相关阅读:
    sh_09_字典的定义
    sh_08_格式化字符串
    sh_07_元组遍历
    sh_06_元组基本使用
    sh_05_列表遍历
    sh_04_列表排序
    sh_03_列表的数据统计
    图片懒加载
    UA池和ip代理池
    爬虫篇 --- 分布式爬虫
  • 原文地址:https://www.cnblogs.com/bifanwen/p/12625020.html
Copyright © 2011-2022 走看看