TYVJ 2009 Lagoon
2016-07-23 10:19
281 查看
LYD大神出的题(%%%)
貌似可以暴搜??但是有一个很机智的作法—-并查集(真的没想到,感谢YSQ童鞋)
我们可以把图看成若干个联通块,相连的就并在一起……….
很久之前就写了草稿,居然一直忘记放代码,(⊙o⊙)…对自己已经无语到没救了>_<
代码如下:
by >o< neighthorn
貌似可以暴搜??但是有一个很机智的作法—-并查集(真的没想到,感谢YSQ童鞋)
我们可以把图看成若干个联通块,相连的就并在一起……….
很久之前就写了草稿,居然一直忘记放代码,(⊙o⊙)…对自己已经无语到没救了>_<
代码如下:
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #define lala(x,y,z) (x*100+y)*4+z using namespace std; const int maxn=50000+5,maxm=100+5; int n,m,fa[maxn],mp[maxm][maxm],G[maxm*2][maxm*2]; double size[maxn]; char str[100+5]; inline int read(){ char ch=getchar(); int f=1,x=0; while(!(ch>='0'&&ch<='9')){ if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return f*x; } int find(int x){ return fa[x]==x ? x : fa[x]=find(fa[x]); } void combine(int x1,int y1,int k1,int x2,int y2,int k2){ if(x1<=0||y1<=0||x2<=0||y2<=0||x1>n||x2>n||y1>m||y2>m) return; int fx=find(lala(x1,y1,k1)),fy=find(lala(x2,y2,k2)); if(fx==fy) return; fa[fy]=fx; size[fx]+=size[fy]; } signed main(void){ n=read(),m=read(); for(int i=1;i<=n;i++){ cin>>str; for(int j=1;j<=m;j++) mp[i][j]=str[j-1]-'0'; } for(int i=0;i<=50000;i++) fa[i]=i; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){ if(mp[i][j]==0){ size[lala(i,j,1)]=size[lala(i,j,4)]=0.785398163397; size[lala(i,j,2)]=size[lala(i,j,3)]=1.214601836602552; combine(i,j,2,i,j,3); } else if(mp[i][j]==1){ size[lala(i,j,1)]=size[lala(i,j,4)]=1.214601836602552; size[lala(i,j,2)]=size[lala(i,j,3)]=0.785398163397; combine(i,j,1,i,j,4); } combine(i,j,1,i-1,j,3); combine(i,j,1,i,j-1,2); combine(i,j,2,i-1,j,4); combine(i,j,3,i,j-1,4); G[(i-1)*2][(j-1)*2]=lala(i,j,1); G[i*2][j*2]=lala(i,j,4); G[i*2][(j-1)*2]=lala(i,j,3); G[(i-1)*2][j*2]=lala(i,j,2); G[i*2-1][j*2-1]=lala(i,j,mp[i][j]+3); } int q=read(); while(q--){ int x=read(),y=read(); if((x+y)&1) printf("0.0000\n"); else printf("%.4f\n",size[find(G[x][y])]); } return 0; }
by >o< neighthorn
相关文章推荐
- django--模板(七)
- robomongo
- golang中strconv.ParseInt函数用法示例
- golang简单读写文件示例
- golang image图片处理示例
- golang实现通过smtp发送电子邮件的方法
- mongo
- HDU1397 POJ2909 UVA686 UVALive5674 ZOJ1657 Goldbach's Conjecture(II)【水题+打表】
- 正确使用goto语句
- QML的渲染方式相较于之前的版本也有了重大的更新(CPU线程负责绘制,GPU线程负责渲染),还有好多经常评论 good
- NYOJ 30 Gone Fishing
- golang substring方法的几种实现
- poj2195 Going Home(最大费用最小流)
- google地图、高德地图基于基站定位位置纠偏
- 类别(Category)与扩展(Extension)的区分
- 各个屏幕的logo尺寸要求
- golang基于websocket实现的简易聊天室程序
- Django入门:模板
- UVa 11090 Going in Cycle! BellmanFord 判负权环
- comments 在djiano 高版本问题