UESTC 1698 The Game
数据量这么小,怎么写都行。。
枚举每一个为‘.'的格子,从这个格子开始搜索能到达的数字格子,两个格子交换一下,判断连成几个,再交换回来,继续搜索下一个。。
//#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相关推荐
- MariaDB/MySQL 报错解决:ERROR 1698 (28000): Access denied for user 'root'@'localhost'
我在安装好MariaDB后,发现一个问题:我必须用root用户才能登录数据库,普通用户不能登录数据库,会报错: -> % mysql -h localhost -u root -p Enter ...
- UESTC 2015dp专题 E 菲波拉契数制 dp
菲波拉契数制 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/65 Descr ...
- 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 ...
- the 12th UESTC Programming Contest Final Justice is Given by Light (几何+ 二分)
题目来源: http://acm.uestc.edu.cn/#/problem/show/814 题意:是给你一堆凸包上的点,这些点会形成一个凸多边形,有两个god站在这个多边形上,他们可以释放一个半 ...
- UESTC 电子科大专题训练 数据结构 J
UESTC 1599 题意:中文题..不写了 思路:优先对列,小的优先 AC代码: #include "iostream" #include "string.h" ...
- ACM学习历程—UESTC 1226 Huatuo's Medicine(数学)(2015CCPC L)
题目链接:http://acm.uestc.edu.cn/#/problem/show/1226 题目就是构造一个对称的串,除了中间的那个只有1个,其余的两边都是对称的两个,自然答案就是2*n-1. ...
- 2015 UESTC Winter Training #10【Northeastern Europe 2009】
2015 UESTC Winter Training #10 Northeastern Europe 2009 最近集训都不在状态啊,嘛,上午一直在练车,比赛时也是刚吃过午饭,状态不好也难免,下次比赛 ...
- 2015 UESTC 数据结构专题H题 秋实大哥打游戏 带权并查集
秋实大哥打游戏 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 Descr ...
- 线段树专辑——hdu 1698 Just a Hook
http://acm.hdu.edu.cn/showproblem.php?pid=1698 这是一个区间染色的问题,对于区间染色问题,通常的方法是在线段树中定义一个cover域,当cover的值为- ...
最新文章
- 数学图形(2.8)Viviani曲线
- Eclipse配置 Maven 异常处理
- 海龟绘图小动物_震惊!被塑料绳勒成两半的海龟
- 六本JAVA架构书,构建科学得架构知识体系
- 2017 4月25日下午
- python base64加解密
- centos6.5 升级python2.6到python2.7
- mysql binlog rotate_mysql binlog日志存储格式
- Cesium:搭建运行环境
- 2019PLAGH-MIT医疗大数据学术交流及Datathon活动正式开始,Workshop环节精彩纷呈
- python几行代码实现微信自动发消息
- 服务器怎么设置自动拨号,网件路由器怎么设置自动拨号
- django之admin调整页面展示
- python列举字符串的五种常用方法_python中字符串、列表、元组、字典每个常用的5个方法...
- Java对象内存大小计算
- EC2 Auto Scaling知识点
- 如何应对CPU帧率瓶颈和卡顿?腾讯游戏学院专家带你剖析
- 如何修改apk文件,反编译(转)
- python读取excel文本单元格换行符_Excel自文本导入内容时如何做到单元格内换行...
- python cookie动态请求_Python请求自动处理cookie