AOJ-0531 Paint Color
2016-01-05 01:58
363 查看
我也是醉了。
这个题还限制内存。。。第一次碰到
这个题还限制内存。。。第一次碰到
#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; }
相关文章推荐
- 2016 Nike Air Max 90
- 直接插入排序StraightInsertSort
- [转] AIX lv 4k偏移量
- HDU 1082.Matrix Chain Multiplication【栈的应用+矩阵乘法规则】【1月4】
- 11. Container With Most Water
- IBM小机P520 AIX
- supervisorctl报错"error: <class 'socket.gaierror'>, [Errno -2] Name or service not known"的解决方法
- 出现( linker command failed with exit code 1)错误总结(http://blog.csdn.net/hengshujiyi/article/details/21182813)
- Contains Duplicate 数组中是否包含重复元素
- 行为树-学习笔记(2)-rain插件做简单的敌人AI(1)
- ORA-04098: trigger 'SYS.XDB_PI_TRIG' is invalid and failed re-validation
- 人工智能
- POJ3250 Bad Hair Day(单调栈)
- asiainfo亚信——实习日记
- 2048游戏-AI程序算法分析
- Pairing heap
- (实训第一天)讲一讲main函数返回值、参数argc、argv、并模仿登录功能
- 记录遇到的各种rails报错
- mkdir 0755 failed
- Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/squareup/o