zoukankan      html  css  js  c++  java
  • HDU 5480:Conturbatio 前缀和

    Conturbatio

    Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
    Total Submission(s): 232    Accepted Submission(s): 108


    Problem Description
    There are many rook on a chessboard, a rook can attack the row and column it belongs, including its own place.

    There are also many queries, each query gives a rectangle on the chess board, and asks whether every grid in the rectangle will be attacked by any rook?
     

    Input
    The first line of the input is a integer T, meaning that there are T test cases.

    Every test cases begin with four integers n,m,K,Q.
    K is the number of Rook, Q is the number of queries.

    Then K lines follow, each contain two integers x,y describing the coordinate of Rook.

    Then Q lines follow, each contain four integers x1,y1,x2,y2 describing the left-down and right-up coordinates of query.

    1n,m,K,Q100,000.

    1xn,1ym.

    1x1x2n,1y1y2m.
     

    Output
    For every query output "Yes" or "No" as mentioned above.
     

    Sample Input
    2 2 2 1 2 1 1 1 1 1 2 2 1 2 2 2 2 2 1 1 1 1 2 2 1 2 2
     

    Sample Output
    Yes No Yes
    Hint
    Huge input, scanf recommended.

    题意是一个棋盘上有很多车,车可以攻击他所属的一行或一列,包括它自己所在的位置。现在有很多询问,每次询问给定一个棋盘内部的矩形,问矩形内部的所有格子是否都被车攻击到?

    对自己的智商感到不断怀疑系列。。。判断中间有没有零,求和啊

    代码:

    #include <iostream>  
    #include <algorithm>  
    #include <cmath>  
    #include <vector>  
    #include <string>  
    #include <cstring>
    #include <stack>
    #pragma warning(disable:4996)  
    using namespace std;
    
    int row[100005];
    int column[100005];
    
    int main()
    {
    	int test,i,j,flag1,flag2;
    	int n,m,k,q,x,y,x1,x2,y1,y2;
    
    	scanf("%d",&test);
    
    	while(test--)
    	{
    		scanf("%d%d%d%d",&n,&m,&k,&q);
    
    		memset(row,0,sizeof(row));
    		memset(column,0,sizeof(column));
    
    		for(i=1;i<=k;i++)
    		{
    			scanf("%d%d",&x,&y);
    			row[x]=1;
    			column[y]=1;
    		}
    		for(i=1;i<=n;i++)
    		{
    			row[i]=row[i]+row[i-1];
    		}
    		for(i=1;i<=m;i++)
    		{
    			column[i]=column[i]+column[i-1];
    		}
    		for(i=1;i<=q;i++)
    		{
    			scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
    			if(x2-x1+1==row[x2]-row[x1-1]||y2-y1+1==column[y2]-column[y1-1])
    			{
    				puts("Yes");
    			}
    			else
    			{
    				puts("No");
    			}
    		}
    	}
    	return 0;
    }




    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Hive on Spark
    Mongodb添加副本及修改优先级
    RabbitMQ与Spring集成
    最简单的图文教程,几步完成Git的公私钥配置
    Idea Ant 打开发包
    Spring Web 项目Junit测试报错问题
    阿里云maven仓库地址,速度提升100倍
    Spring boot 学习
    JAVA开发常用工具包
    从无到有搭建SSM框架
  • 原文地址:https://www.cnblogs.com/lightspeedsmallson/p/4899558.html
Copyright © 2011-2022 走看看