设为首页 加入收藏

TOP

hdu 4056 Draw a Mess(数据结构-并查集)(二)
2015-07-20 17:39:17 来源: 作者: 【 】 浏览:5
Tags:hdu 4056 Draw Mess 数据结构 查集
1; if(L>R) return false; return true; } } inline bool getDiamond(int pos,int xc,int yc,int r , int &L , int &R) { int tmp = r - abs(xc-pos); if(tmp < 0) return false; L = yc-tmp; //L = max(0,L); if(0 > L) L = 0; R = yc+tmp; //R = min(m-1,R); if(R > m-1) R = m-1; if(L>R) return false; return true; } inline bool getTriangle(int pos , int xc , int yc , int w , int &L , int &R){ if(pos < xc) return false; L = yc-w/2+pos-xc; R = yc+w/2-(pos-xc); //L = max(L , 0); if(0 > L) L = 0; //R = min(R , m-1); if(R > m-1) R = m-1; if(L>R) return false; return true; } void initial(){ for(int i = 0; i < 15; i++) color[i] = 0; v.clear(); for(int i = 0; i < maxm; i++) father[i] = i , vis[i] = 0; } void computing(){ char shape[20]; int xc , yc , w , r , c , l , L , R; while(q--){ scanf("%s" , shape); if(shape[0] == 'C'){ scanf("%d%d%d%d" , &xc , &yc , &r , &c); } if(shape[0] == 'D'){ scanf("%d%d%d%d" , &xc , &yc , &r , &c); } if(shape[0] == 'R'){ scanf("%d%d%d%d%d" ,&xc ,&yc ,&l ,&w ,&c); } if(shape[0] == 'T'){ scanf("%d%d%d%d" ,&xc,&yc,&w,&c); } v.push_back(Node(shape[0] , xc , yc , r , l , w , c)); } int fl , fr; for(int i = 0; i < n; i++){ //cout << i << ": "; for(int j = 0; j < m; j++) father[j] = j , vis[j] = 0; for(int k = v.size()-1; k >= 0; k--){ if(v[k].op == 'C' && !getCircle(i , v[k].xc , v[k].yc , v[k].r , L , R))continue; if(v[k].op == 'D' && !getDiamond(i , v[k].xc , v[k].yc , v[k].r , L , R)) continue; if(v[k].op == 'R' && !getRect(i , v[k].xc , v[k].yc , v[k].l , v[k].w , L , R)) continue; if(v[k].op == 'T' && !getTriangle(i , v[k].xc , v[k].yc , v[k].w , L , R)) continue; c = v[k].c; //cout << L << " " << R << " " << c << endl; int fl = findFather(L); while(R>=L){ if(vis[R] == 0){ vis[R] = 1; color[c]++; } fr = findFather(R); R = min(fr-1 , R-1); if(fr > fl)father[fr] = fl; } } } printf("%d" , color[1]); for(int i = 2; i <= 9; i++) printf(" %d" , color[i]); printf("\n"); } int main(){ while(~scanf("%d%d%d" , &n , &m , &q)){ initial(); computing(); } return 0; }

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇SDUT 2498-AOE网上的关键路径(spf.. 下一篇hdu 5018 Revenge of Fibonacci

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·数据库:推荐几款 Re (2025-12-25 12:17:11)
·如何最简单、通俗地 (2025-12-25 12:17:09)
·什么是Redis?为什么 (2025-12-25 12:17:06)
·对于一个想入坑Linux (2025-12-25 11:49:07)
·Linux 怎么读? (2025-12-25 11:49:04)