hdu2258 Continuous Same Game (1)

2024-05-28 10:58
文章标签 game continuous hdu2258

本文主要是介绍hdu2258 Continuous Same Game (1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

此题是模拟消除游戏,根据题目的策略,优先消除数量最多且X、Y坐标更小的连通块,nm范围在20以内,模拟即可。


#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int maxn=25;
int n,m;
int mp[maxn][maxn],vis[maxn][maxn];
struct ty
{int x,y;
};
queue<ty> q;
int ok(int x,int y) {return x>=0&&x<n&&y>=0&&y<m;}
const int dx[]={1,-1,0,0};
const int dy[]={0,0,1,-1};
int bfs(int x,int y,int key)
{int ans=1;while (!q.empty()) q.pop();ty st;st.x=x;st.y=y;q.push(st);vis[x][y]=1;while (!q.empty()){ty &now=q.front();for (int i=0;i<4;i++){int nx=now.x+dx[i];int ny=now.y+dy[i];ty exp;exp.x=nx;exp.y=ny;if (ok(nx,ny)&&!vis[nx][ny]&&mp[nx][ny]==key){vis[nx][ny]=1;ans++;q.push(exp);}}q.pop();}return ans;
}
int main()
{while (~scanf("%d%d",&n,&m)){memset(mp,0,sizeof(mp));for (int i=0;i<n;i++)for (int j=0;j<m;j++)scanf("%1d",&mp[i][j]);int ans=0;while (1)		//循环至不能消除为止{int x,y,k=0;memset(vis,0,sizeof(vis));for (int i=0;i<n;i++)			//枚举每个位置点for (int j=0;j<m;j++)if (mp[i][j]!=0){int tmp=bfs(i,j,mp[i][j]);		//算出这个位置能消除的个数if (tmp>k){k=tmp;x=i;y=j;}}if (k<=1) break;			//不能消除,退出循环ans+=k*(k-1);				memset(vis,0,sizeof(vis));bfs(x,y,mp[x][y]);for (int i=0;i<n;i++)			//将消除的位置赋值为0for (int j=0;j<m;j++)if (vis[i][j])mp[i][j]=0;for (int time=0;time<=n;time++)		//消除列下面的0for (int j=0;j<m;j++){for (int i=n-1;i>=0;i--)if (mp[i][j]==0){for (int l=i;l>=1;l--)mp[l][j]=mp[l-1][j];mp[0][j]=0;}}for (int time=0;time<=m;time++)	//消除空行for (int j=0;j<m;j++)if (mp[n-1][j]==0){for (int l=j;l<m-1;l++)for (int i=0;i<n;i++)mp[i][l]=mp[i][l+1];for (int i=0;i<n;i++)mp[i][m-1]=0;}}printf("%d\n",ans);}return 0;
}


这篇关于hdu2258 Continuous Same Game (1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1010368

相关文章

fzu 2275 Game KMP

Problem 2275 Game Time Limit: 1000 mSec    Memory Limit : 262144 KB  Problem Description Alice and Bob is playing a game. Each of them has a number. Alice’s number is A, and Bob’s number i

10400 -Game Show Math

这道题的话利用了暴力深搜,尽管给了20S,但是这样还会超时,所以就需要利用回溯进行减枝,因为是DFS,所以用一个数组vis[i][j]记录是否在状态i时候取到过j值,如果取到过的话,那么直接回溯(往后搜索已经没有意义了,之前到达这个状态的时候是无法得到结果的) 还有需要注意的地方就是题目的要求,每一步的结构都在(-32000,32000)之间,所以需要一步判断,如果在这个范围外直接回溯 最后一

【POJ】1733 Parity game 并查集

传送门:【POJ】1733 Parity game 题目大意:给你一个长度为n的01序列,再给你m句话,每句话是一个区间【L,R】,告诉你区间【L,R】中1的个数,现在你的任务是找到从第几句话开始说的和前面矛盾,出现第一次假话的时候前面有多少是真话。 题目分析:一开始看几乎没思路啊。后来没办法了,只能跑别人的博客去看看了。。。一看到说把一个区间【L,R】拆成两个区间【0,L-1】,

【HDU】5426 Rikka with Game【DP】

题目链接:【HDU】5426 Rikka with Game #include <bits/stdc++.h>using namespace std ;typedef long long LL ;#define clr( a , x ) memset ( a , x , sizeof a )const int MAXN = 100005 ;const int MAXE = 200005 ;

LeetCode 45 Jump Game II

题意: 给出一个步长数组nums,如果一个人站在i这个点上那么他可以向右最多走nums[i]步,求从左端点走到右端点的最少步数。 思路: 如果点x可以用dp[x]步到达,那么[ x + 1, x + nums[x] ]区间内的点都可以用dp[x] + 1步到达。 利用这个想法,可以O(n)的求出走一步可以到达哪些位置,走两步可以到达哪些位置,以此类推。 代码: clas

Maven持续集成(Continuous integration,简称CI)版本友好管理

从Maven 3.5.0-beta-1 版本开始可以在pom文件中使用 r e v i s i o n 、 {revision}、 revision、{sha1}、${changelist}做为版本的占位符。 一、单module简单使用${revision}的场景 <project><modelVersion>4.0.0</modelVersion><parent><groupId>or

【论文笔记】Multi-Task Learning as a Bargaining Game

Abstract 本文将多任务学习中的梯度组合步骤视为一种讨价还价式博弈(bargaining game),通过游戏,各个任务协商出共识梯度更新方向。 在一定条件下,这种问题具有唯一解(Nash Bargaining Solution),可以作为多任务学习中的一种原则方法。 本文提出Nash-MTL,推导了其收敛性的理论保证。 1 Introduction 大部分MTL优化算法遵循一个通用方

android-Intent,Injector,Template,Adapter,Validation,Gesture,Game,Game Engine,Bluetooth...

Intent Intent PhotoPicker 图片选择 & 图片预览https://github.com/donglua/PhotoPicker Injector AndroidAnnotations Fast Android Development. Easy maintainance. https://github.com/excilys/androidannotations

HDU5515 Game of Flying Circus(二分)

题意:题解有翻译,然后自己拦截对手时候可以任意走,当然是直线最快啦 题解:http://www.cnblogs.com/qscqesze/p/4931912.html #include<bits/stdc++.h>using namespace std;#define LL long long#define pb push_back#define X first#define Y

hdu 1846 Brave Game 巴什博奕

Description 十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫《勇敢者的游戏》(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻。  今天,大家选择上机考试,就是一种勇敢(brave)的选择;这个短学期,我们讲的是博弈(game)专题;所以,大家现在玩的也是“勇敢者的游戏”,这也是我命名这个题目的原因。  当然,除了