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; }
无聊就学习 反正没事干