P2692 覆盖


题目如下:

 

 思路:

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

2.先算出行的所有格子

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

代码如下:

#include 
#include 
#include
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)
        {
            if(r[i]!=1){
            r[i]++;
            sum+=m;
            col++;    
            }
        }
    }
    
    while(g--){
        cin>>x>>y;
        for(int i=x-1;i)
        {
            if(c[i]!=1){
            c[i]++;
            sum+=n-col;
            }
        }
    }
    cout<endl;
    return 0;
}