bfs CCF2016第七次 游戏

 1 // bfs CCF2016第七次 游戏
 2 // 思路:
 3 // O(300*100*100)
 4 // 直接暴搜
 5 // 注意,同一格同一时间不能经过两次!!!
 6
 7 #include <bits/stdc++.h>
 8 using namespace std;
 9 #define LL long long
10 const double inf = 123456789012345.0;
11 const LL MOD =100000000LL;
12 const int N =1e4+10;
13 #define clc(a,b) memset(a,b,sizeof(a))
14 const double eps = 1e-7;
15 void fre() {freopen("in.txt","r",stdin);}
16 void freout() {freopen("out.txt","w",stdout);}
17 inline int read() {int x=0,f=1;char ch=getchar();while(ch>‘9‘||ch<‘0‘) {if(ch==‘-‘) f=-1; ch=getchar();}while(ch>=‘0‘&&ch<=‘9‘) {x=x*10+ch-‘0‘;ch=getchar();}return x*f;}
18
19 int d[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
20 struct node{
21     int inx;
22     int r,c,a,b;
23 }g[N];
24
25 bool vis[110][110][300]={0};
26 void init(int n,int m){
27     for(int i=1;i<=n;i++){
28         for(int j=1;j<=m;j++){
29             g[(i-1)*m+j].r=i;
30             g[(i-1)*m+j].c=j;
31             g[(i-1)*m+j].a=g[(i-1)*m+j].b=g[(i-1)*m+j].inx=0;
32         }
33     }
34 }
35
36 queue<node> q;
37 int bfs(int n,int m){
38    q.push(g[1]);
39    int ans=0;
40    while(!q.empty()){
41       node tem=q.front();
42       q.pop();
43       ans=tem.inx;
44       if(tem.r==n&&tem.c==m){
45         return ans;
46       }
47       ans++;
48       for(int i=0;i<4;i++){
49          int x=tem.r+d[i][0];
50          int y=tem.c+d[i][1];
51          int num=(x-1)*m+y;
52          if(x>=1&&x<=n&&y>=1&&y<=m&&(ans>g[num].b||ans<g[num].a)&&ans<=300&&!vis[x][y][ans]){
53             node tm;
54             tm=g[num];
55             tm.inx=ans;
56             vis[x][y][ans]=true;
57             q.push(tm);
58          }
59       }
60    }
61 }
62
63 int main(){
64     // fre();
65     int n,m,t;
66     scanf("%d%d%d",&n,&m,&t);
67     init(n,m);
68     for(int i=1;i<=t;i++){
69         int r,c,a,b;
70         scanf("%d%d%d%d",&r,&c,&a,&b);
71         g[(r-1)*m+c].a=a;
72         g[(r-1)*m+c].b=b;
73     }
74     int ans=bfs(n,m);
75     printf("%d\n",ans);
76     return 0;
77 }
时间: 2024-11-08 04:29:04

bfs CCF2016第七次 游戏的相关文章

Html5 Egret游戏开发 成语大挑战(七)游戏逻辑和数据处理

本篇在前面的基础上,将进行逻辑的编码开发让游戏能够正式的玩起来,这里没有注重太多的体验细节,而是直接实现游戏的规则逻辑,将分成两个部分说明:数据处理和游戏逻辑. 初始化游戏数据 在前面的第五篇中,我们通过数据的构建已经读取了所有的关卡数据在关卡选择界面中,LevelDataManager负责管理所有的关卡数据,在SceneLevels类中,当onclick_level触发时,就会切换到Game界面中,所以改造代码如下: private onclick_level(e:egret.TouchEve

HTML5+JS 《五子飞》游戏实现(七)游戏试玩

前面第一至第六章我们已经把<五子飞>游戏的基本工作都已经讲得差不多了,这一章主要是把所有的代码分享给大家,然后小伙伴们也可以玩一玩. 至于人机对战的我们放到后面讲进行分析. 试玩地址:http://www.lyout.com/projects/fiveflychess/FiveflyChess7.htm 现在我们来总结一下该小游戏的一些基本定义: // 定义游戏对象 function GameChess(){ // 初始配置 this.init = function ()//... // 画棋

在聚会中常玩数七的游戏,七的倍数和带有七的数字都不能说,比如14,27,28。请找出1~100的不能说的数字。

利用ES5的filter高阶函数来实现 var arr =[1,2,3,4,5,6,7,17,27,21,22,28......100], r = arr.filter(function(x){ return (x % 10 == 7|| x % 7 == 0); }); alert(r);//[7,14,17,21,27,28..........97]

HTML5+JS 《五子飞》游戏实现(八)人机对战

要想实现人机对战,就必须让电脑自动下棋,而且要知道自动去查找对方的棋子,看看有没有可以挑一对的,有没有可以夹一个的,这样下起来才有意思. 当电脑用户下完棋后,电脑应立即搜索用户的棋子,然后如果没有被吃的,就再随机走一个棋子(要想让电脑成为下棋高手就不能随机下棋,要考虑下棋后会不会再被对方吃掉等等,这里只简单做随机下子了). 完整<五子飞>游戏人机对战:http://www.lyout.com/projects/Fiveflychess/FiveflyChess8.htm // 查找是否有可挑的

JS开发HTML5游戏《悠悠考拉》(三)

(点击图片可进入试玩) 本篇文章为第三部分内容,这篇文章将接着上篇文章的内容,这篇文章的主要内容有: 7.游戏中的暂停与结束处理 8.排行榜界面 七.游戏中的暂停与结束处理 7.1 暂停 暂停处理:在游戏中,秋千的摇摆.柱子的移动等都是通过Tween动画实现的,例如秋千摇摆我们可以加TweenRation动画.柱子移动可以加TweenPosition动画.当我们按下暂停键时,此时,秋千与柱子还有考拉等应该是静止的,我还希望能弹出另一个界面,该界面有一些界面按钮,点击按钮可以实现对应的操作,关闭弹

一个C语言开发的炸金花纸牌游戏附带vs性能分析报告

一.游戏说明: 编写的是一个模拟炸金花的纸牌游戏,游戏附有一个操作说明文档,按照文档上的操作方法,可以简单的开启游戏,整个程序包扩一个编译好的.exe文件,和两个资源文件夹,分别存有该游戏运行时候所需要的照片资源和音乐资源,用户可以直接点击exe文件运行游戏,然后按照相关操作方法来进行游戏. 二.编程语言环境介绍: 本游戏是在VC6.0环境下,用C语言加上一个easyx的C语言图形库实现的.程序源文件建立的是.cpp文件,但是程序开发是采用的C语言语法和风格,建立.cpp文件的原因是,easyx

【微信小游戏实战】零基础制作《欢乐停车场》一、游戏设计

1.游戏立项 微信小游戏中有一款<欢乐停车场>的小游戏,大家可以搜索玩下.这是一款益智类的小游戏,游戏中有红.黄.绿.蓝.紫5辆豪车6个停车位,玩家通过可行走路线移动小车,最终让各颜色的小车停到对应的颜色车位,则完成本关挑战.接下来的日子,我将同大家一步一步的来实现这款小游戏,从零基础入门微信小游戏的开发和发布. 2.本篇内容 CocosCreator零基础制作<欢乐停车场Plus>微信小游戏  一.游戏设计 3.文章检索 1).[微信小游戏实战]零基础制作<欢乐停车场>

俄罗斯方块(2D、3D)

声明:这篇文章主要是参考几个别人的博文及源代码学习.参考文章: 1)http://blog.csdn.net/qian_f/article/details/19758671 2)http://yacare.iteye.com/blog/1949398 砖块类型: 如何实现俄罗斯方块游戏?首先我们需要确定有些中的初始化有多少种方块,每种方块是可以如何变形?一共包含以下七种图形.变形情况如下: 方块一:    变形1       变形2          变形3           变形4   +

账号menu

一.邮箱 163邮箱 新浪邮箱 gmail 二.网盘 百度云 115网盘 华为网盘 三.技术论坛 看雪论坛 csdn ChinaUnix 四.域名 万网域名 美橙互联时空 五.网购网站 京东 淘宝taobao 一号店 小米 六.网购支付 支付宝 七.游戏 热血江湖 武林外传 八.电影 橙天嘉禾 九.微博/博客 twitter 新浪微博 十.f墙 加速精灵 十一.虚拟主机 / VPS 中国龙网 一百.杂 幽灵代码编程十万个为什么飘云阁apkbusiteyelampbrother兄弟连pudn51c