AOJ-0531 Paint Color
来源:互联网 发布:手机预装软件 编辑:程序博客网 时间:2024/05/29 15:41
我也是醉了。
这个题还限制内存。。。第一次碰到
#include <iostream>#include <map>#include <algorithm>#include <cstdio>#include <cstring>#include <cstdlib>#include <vector>#include <queue>#include <stack>#include <functional>#include <set>#include<sstream>#include <cmath>using namespace std;#define pb push_back#define PB pop_back#define bk back()#define fs first#define se second#define INF 1e9*2+10#define sq(x) (x)*(x)#define eps (1e-7)#define clr(x) memset((x),0,sizeof (x))#define cp(a,b) memcpy((a),(b),sizeof (b))const int maxn=1005;int W,H,N;int x1[maxn],x2[maxn],Y1[maxn],Y2[maxn];int fld[maxn*3][maxn*3];int dir[4][2]={1,0,0,1,0,-1,-1,0};int compress(int *x1,int *x2,int w){ vector<int> v; for(int i=1;i<=N;i++) { int tx1,tx2; for(int d=-1;d<=1;d++) { tx1=x1[i]+d; tx2=x2[i]+d; if(tx1>=0&&tx1<w) v.pb(tx1); if(tx2>=0&&tx2<w) v.pb(tx2); } } sort(v.begin(),v.end()); v.erase(unique(v.begin(),v.end()),v.end()); for(int i=1;i<=N;i++) { x1[i]=lower_bound(v.begin(),v.end(),x1[i])-v.begin(); x2[i]=lower_bound(v.begin(),v.end(),x2[i])-v.begin(); } return v.size();}void solve(){ W=compress(x1,x2,W); H=compress(Y1,Y2,H); clr(fld); for(int i=1;i<=N;i++) for(int y=Y1[i];y<=Y2[i];y++) for(int x=x1[i];x<=x2[i];x++) fld[y][x]=1; int ans=0; /* for(int x=0;x<W;x++) { for(int y=0;y<H-1;y++) cout<<fld[x][y]<<" "; cout<<fld[x][H-1]<<endl; } */ for(int y=0;y<H;y++) for(int x=0;x<W;x++) { if(fld[y][x]) continue; fld[y][x]=1; ans++; queue<pair<int,int> > q; q.push(make_pair(x,y)); while(!q.empty()) { int xx,yy,nx,ny; xx=q.front().fs,yy=q.front().se; q.pop(); for(int i=0;i<4;i++) { nx=xx+dir[i][0]; ny=yy+dir[i][1]; if(nx<0||nx>=W||ny<0||ny>=H||fld[ny][nx]) continue; fld[ny][nx]=1; q.push(make_pair(nx,ny)); } } } printf("%d\n",ans);}int main(){ while(~scanf("%d%d",&W,&H)&&W&&H) { scanf("%d",&N); for(int i=1;i<=N;i++)//注意这里,把这个坐标当成书上面的一个一个格子。。。。。然后照着做就行了....... { scanf("%d%d%d%d",&x1[i],&Y1[i],&x2[i],&Y2[i]); x2[i]-=1; Y2[i]-=1; } solve(); } return 0;}
0 0
- AOJ-0531 Paint Color
- Aizu - 0531 Paint Color (坐标离散化)
- Paint画笔及Color
- Paint画笔及Color
- Paint和Color类
- Android Paint和Color类
- Android Paint和Color类
- Android Paint和Color类
- Paint和Color的介绍
- Android Paint和Color类
- Android Paint和Color类
- Android Paint和Color类
- Android Paint和Color类
- Android Paint和Color类
- Android Paint和Color类
- Android Paint和Color类
- Android Paint和Color类
- Android Paint和Color类
- 从指定文件夹读取文件并把读取到的文件写入到指定文件夹
- HLJU——15级寒假培训3 题解
- SD卡浏览器
- Ubuntu 14.04 没有system settings的解决办法
- 坐标离散化
- AOJ-0531 Paint Color
- volley 获取cookie
- Event filter with query "SELECT * FROM __InstanceModificationEvent WITHIN 60
- 打印机 Foxit Reader PDF Printer 所需的驱动程序 Foxit Reader PDF Printer Driv
- mysql将字符串转换成数组
- 项目截图
- choose an existing server不能选问题
- ArcGIS for js简单实现
- 黑马程序员_键盘的录入和转换流