【jzoj4777】【灌水】【搜索】
来源:互联网 发布:编程书 编辑:程序博客网 时间:2024/06/05 04:25
题目大意
解题思路
显然暴力模拟,我是一块一块(2*2)考虑的,注意一块有四个访问标记即一个块的不同部分都有可能被访问到。
code
#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#define LL long long#define max(a,b) ((a>b)?a:b)#define min(a,b) ((a>b)?b:a)#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)using namespace std;int const maxn=100,inf=2147483647;int n,m,q,map[maxn+10][maxn+10],vis[maxn+10][maxn+10][10];double ans,pi=3.1415926535897;void dfs(int i,int j,int p){ if(vis[i][j][p])return; vis[i][j][p]=1; if(map[i][j]){ if(p&1){ ans+=4-pi/2; vis[i][j][1]=vis[i][j][3]=1; }else ans+=pi/4; if(p&1){ if(i>1)dfs(i-1,j,4); if(j>1)dfs(i,j-1,2); if(i!=n)dfs(i+1,j,2); if(j!=m)dfs(i,j+1,4); }else if(p==2){ if(i>1)dfs(i-1,j,3); if(j!=m)dfs(i,j+1,1); }else{ if(i!=n)dfs(i+1,j,1); if(j>1)dfs(i,j-1,3); } }else{ if(!(p&1)){ ans+=4-pi/2; vis[i][j][2]=vis[i][j][4]=1; }else ans+=pi/4; if(!(p&1)){ if(i>1)dfs(i-1,j,3); if(j>1)dfs(i,j-1,3); if(i!=n)dfs(i+1,j,1); if(j!=m)dfs(i,j+1,1); }else if(p==1){ if(i>1)dfs(i-1,j,4); if(j>1)dfs(i,j-1,2); }else{ if(i!=n)dfs(i+1,j,2); if(j!=m)dfs(i,j+1,4); } }}int main(){ freopen("d.in","r",stdin); freopen("d.out","w",stdout); scanf("%d%d\n",&n,&m); fo(i,1,n) fo(j,1,m){ char ch=getchar(); for(;(ch!='0')&&(ch!='1');ch=getchar()); map[i][j]=ch-'0'; } scanf("%d",&q); fo(i,1,q){ int x,y;scanf("%d%d",&x,&y); if(x%2+y%2==1)printf("0.0000\n"); else{ ans=0; fo(i,1,n)fo(j,1,m)fo(k,1,4)vis[i][j][k]=0; if((!x)&&(!y))dfs(1,1,1); else if((!x)||(!y)){ if(!y)dfs(x/2,1,4); else dfs(1,y/2,2); }else if(x%2==0){ dfs(x/2,y/2,3); }else{ if(map[(x+1)/2][(y+1)/2])dfs((x+1)/2,(y+1)/2,1); else dfs((x+1)/2,(y+1)/2,2); } printf("%.4lf\n",ans); } } return 0;}
0 0
- 【jzoj4777】【灌水】【搜索】
- 灌水
- 灌水
- 灌水
- 灌水
- 灌水
- 灌水
- 灌水
- water 灌水问题(最小生成树 搜索)
- 前来灌水
- 今日灌水
- Sina 灌水
- 灌水回复
- 灌水贴
- 杂谈灌水
- 纯属灌水
- 灌水一篇
- 灌水问题
- Android中Intent组件详解
- (kuangbin BFS)Dungeon Master
- 浅析Python运算符重载
- 开通博客,和大家分享经验
- Linux中执行shell脚本的4种方法总结
- 【jzoj4777】【灌水】【搜索】
- 工厂方法模式
- IO流<笔记>
- bootstrap-typeahead的ajax调用
- HDU 5630 Rikka with Chess(构造)
- 【51Nod1292】字符串中的最大值
- wmic的官方链接
- 下一个学习计划
- Codeforces-160B-Unlucky Ticket