数据量这么小,怎么写都行。。

枚举每一个为‘.'的格子,从这个格子开始搜索能到达的数字格子,两个格子交换一下,判断连成几个,再交换回来,继续搜索下一个。。

//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<iostream>
#include<sstream>
#include<cmath>
#include<climits>
#include<string>
#include<map>
#include<queue>
#include<vector>
#include<stack>
#include<set>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
#define pb(a) push_back(a)
#define INF 0x1f1f1f1f
#define lson idx<<1,l,mid
#define rson idx<<1|1,mid+1,r
#define PI  3.1415926535898
template<class T> T min(const T& a,const T& b,const T& c) {return min(min(a,b),min(a,c));
}
template<class T> T max(const T& a,const T& b,const T& c) {return max(max(a,b),max(a,c));
}
void debug() {
#ifdef ONLINE_JUDGE
#elsefreopen("d:\\in.txt","r",stdin);freopen("d:\\out1.txt","w",stdout);
#endif
}
int getch() {int ch;while((ch=getchar())!=EOF) {if(ch!=' '&&ch!=' ')return ch;}return EOF;
}
char grid[11][11];
int maxx;
int vis[11][11];
int dfsflag[11][11];
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
int check(int x,int y,int v)
{int sum=0;int num;num=0;for(int i=x+1;i<=10;i++)if(grid[i][y]==v+'0')num++;else break;for(int i=x-1;i>=1;i--)if(grid[i][y]==v+'0')num++;else break;if(num>=4)sum+=num;num=0;for(int j=y+1;j<=10;j++)if(grid[x][j]==v+'0')num++;else break;for(int j=y-1;j>=1;j--)if(grid[x][j]==v+'0')num++;else break;if(num>=4)sum+=num;num=0;for(int i=x+1,j=y+1;i<=10&&j<=10;i++,j++)if(grid[i][j]==v+'0')num++;else break;for(int i=x-1,j=y-1;i>=1&&j>=1;i--,j--)if(grid[i][j]==v+'0')num++;else break;if(num>=4)sum+=num;num=0;for(int i=x+1,j=y-1;i<=10&&j>=1;i++,j--)if(grid[i][j]==v+'0')num++;else break;for(int i=x-1,j=y+1;i>=1&&j<=10;i--,j++)if(grid[i][j]==v+'0')num++;else break;if(num>=4)sum+=num;return sum;
}
int dfs(int x,int y,int bx,int by)
{vis[x][y]=1;if(grid[x][y]!='.'){int v=grid[x][y]-'0';grid[x][y]='.';int d=check(bx,by,v);grid[x][y]=v+'0';if(d==0)return 0;maxx=max(d+1,maxx);return 0;}for(int d=0;d<4;d++){int nx=x+dx[d],ny=y+dy[d];if(nx>=1&&nx<=10&&ny>=1&&ny<=10&&!vis[nx][ny])dfs(nx,ny,bx,by);}
}
int judge(int x,int y)
{memset(vis,0,sizeof(vis));dfs(x,y,x,y);
}
int main()
{// freopen("d:\\in.txt","r",stdin);int ca=0;while(scanf("%s",grid[1]+1)!=EOF){for(int i=2;i<=10;i++)scanf("%s",grid[i]+1);if(ca!=0)printf("\n");int flag=0;for(int i=1;i<=10;i++){for(int j=1;j<=10;j++)if(grid[i][j]!='.'){int d=check(i,j,grid[i][j]-'0');if(d!=0){flag=1;break;}}if(flag)break;}if(flag){printf("Case #%d: Waiting!\n",++ca);continue;}maxx=0;for(int i=1;i<=10;i++){for(int j=1;j<=10;j++)if(grid[i][j]=='.'){judge(i,j);}}printf("Case #%d: %d\n",++ca,maxx);}return 0;
}

View Code

转载于:https://www.cnblogs.com/BMan/p/3271090.html

UESTC 1698 The Game相关推荐

  1. MariaDB/MySQL 报错解决:ERROR 1698 (28000): Access denied for user 'root'@'localhost'

    我在安装好MariaDB后,发现一个问题:我必须用root用户才能登录数据库,普通用户不能登录数据库,会报错: -> % mysql -h localhost -u root -p Enter ...

  2. UESTC 2015dp专题 E 菲波拉契数制 dp

    菲波拉契数制 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/65 Descr ...

  3. The 15th UESTC Programming Contest Preliminary C - C0ins cdoj1554

    地址:http://acm.uestc.edu.cn/#/problem/show/1554 题目: C0ins Time Limit: 3000/1000MS (Java/Others)     M ...

  4. the 12th UESTC Programming Contest Final Justice is Given by Light (几何+ 二分)

    题目来源: http://acm.uestc.edu.cn/#/problem/show/814 题意:是给你一堆凸包上的点,这些点会形成一个凸多边形,有两个god站在这个多边形上,他们可以释放一个半 ...

  5. UESTC 电子科大专题训练 数据结构 J

    UESTC 1599 题意:中文题..不写了 思路:优先对列,小的优先 AC代码: #include "iostream" #include "string.h" ...

  6. ACM学习历程—UESTC 1226 Huatuo's Medicine(数学)(2015CCPC L)

    题目链接:http://acm.uestc.edu.cn/#/problem/show/1226 题目就是构造一个对称的串,除了中间的那个只有1个,其余的两边都是对称的两个,自然答案就是2*n-1. ...

  7. 2015 UESTC Winter Training #10【Northeastern Europe 2009】

    2015 UESTC Winter Training #10 Northeastern Europe 2009 最近集训都不在状态啊,嘛,上午一直在练车,比赛时也是刚吃过午饭,状态不好也难免,下次比赛 ...

  8. 2015 UESTC 数据结构专题H题 秋实大哥打游戏 带权并查集

    秋实大哥打游戏 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 Descr ...

  9. 线段树专辑——hdu 1698 Just a Hook

    http://acm.hdu.edu.cn/showproblem.php?pid=1698 这是一个区间染色的问题,对于区间染色问题,通常的方法是在线段树中定义一个cover域,当cover的值为- ...

最新文章

  1. 数学图形(2.8)Viviani曲线
  2. Eclipse配置 Maven 异常处理
  3. 海龟绘图小动物_震惊!被塑料绳勒成两半的海龟
  4. 六本JAVA架构书,构建科学得架构知识体系
  5. 2017 4月25日下午
  6. python base64加解密
  7. centos6.5 升级python2.6到python2.7
  8. mysql binlog rotate_mysql binlog日志存储格式
  9. Cesium:搭建运行环境
  10. 2019PLAGH-MIT医疗大数据学术交流及Datathon活动正式开始,Workshop环节精彩纷呈
  11. python几行代码实现微信自动发消息
  12. 服务器怎么设置自动拨号,网件路由器怎么设置自动拨号
  13. django之admin调整页面展示
  14. python列举字符串的五种常用方法_python中字符串、列表、元组、字典每个常用的5个方法...
  15. Java对象内存大小计算
  16. EC2 Auto Scaling知识点
  17. 如何应对CPU帧率瓶颈和卡顿?腾讯游戏学院专家带你剖析
  18. 如何修改apk文件,反编译(转)
  19. python读取excel文本单元格换行符_Excel自文本导入内容时如何做到单元格内换行...
  20. python cookie动态请求_Python请求自动处理cookie

热门文章

  1. java consumer_Java 8 Consumer接口
  2. FPGA之道(5)MOS管简介
  3. 【 FPGA 】UltraFast设计方法学:理解实现策略
  4. centos6.8 安装nginx
  5. bzoj4830 hnoi2017 抛硬币
  6. 在android上移植ios
  7. js 提交form表单,js更改form表单的action属性
  8. java上机练习01
  9. DataTable分页控件设计(适用于Gridview和Repeater)
  10. Visio绘制功能分解图