P2692 覆盖

题目如下:

 

 

 

 思路:

1.如果直接for循环肯定无法满分

2.先算出行的所有格子

再加上列的所有格子(注意列的格子不是全部加上,加上除了行没有覆盖的那个别的格子)

代码如下:

#include<cstdio> 
#include<iostream> 
#include<cstring>
using namespace std;
int n,m,b,g;

main(){
    cin>>n>>m>>b>>g;
    int r[n+1],c[m+1];
    int x,y,col=0,sum=0;
    memset(r,0,sizeof(r));
    memset(c,0,sizeof(c));
    while(b--){
        cin>>x>>y;
        for(int i=x-1;i<y;i++)
        {
            if(r[i]!=1){
            r[i]++;
            sum+=m;
            col++;    
            }
        }
    }
    
    while(g--){
        cin>>x>>y;
        for(int i=x-1;i<y;i++)
        {
            if(c[i]!=1){
            c[i]++;
            sum+=n-col;
            }
        }
    }
    cout<<sum<<endl;
    return 0;
}

 

posted @ 2020-11-06 23:15  miao-xixixi  阅读(89)  评论(0编辑  收藏  举报