战棋游戏 {游戏模拟+spfa}

本文介绍了一款战棋游戏的模拟过程,强调了在模拟中需要注意的细节,如角色状态管理、使用SPFA算法处理点权问题、C++输入处理等。在模拟过程中,角色行动会受到行动力、位置变化以及周围角色的影响,同时提供了样例输入和输出,以及对数据规模和约定的说明。
摘要由CSDN通过智能技术生成
  • 【题目描述】

这里写图片描述
这里写图片描述
这里写图片描述

  • 【Input Format】

这里写图片描述

  • 【Output Format】

这里写图片描述

  • 【Sample Input】
    5 5 4 12
    1 9 1 4 4
    1 9 1 2 4
    1 9 1 1 2
    2 9 2 7 3
    2 3 2 6 1
    10 5 8 1 3 1 1 0
    20 10 5 1 2 2 1 0
    19 10 5 1 2 5 2 1
    25 25 3 1 1 5 5 0
    Round of 0
    Action of character 2
    Move to (5,1)
    Attack 3
    Action of character 1
    Move to (3,1)
    Round of 1
    Action of character 3
    Drive out 1
    Round of 0
    Action of character 2
    Drive out 3

  • 【Sample Output】
    0
    9
    6
    INVALID
    -1

  • 【数据规模与约定】
    对于80%的数据,不存在不合法事件。
    对于100%的数据,参见输入输出格式中给定的范围与保证。


【题解】模拟啊模拟 // 近几年复赛喜欢出的模拟题QAQ
{细节一}死掉的角色必须将其所有信息清空好,以免干扰后续行动;
{细节二}图上的点相当于有点权,必须用spfa而非广搜;spfa时记得判断移动力清零情况及边界问题;
{细节三}C++读入时要格外小心,听说好多god直接用读入优化,我就默默写了个长长的读入QAQ;
{细节四}如果某角色移动前后位置不变,即使它旁边存在其他阵营角色,其剩余行动力为初始行动力;
{细节五}大概没了有了再说呗。。。
//还是看程序吧哎TAT


#include <cstdio>
#include <cstring>
#define N 105
#define inf 1000000000
const int fx[4][2]={
  {
  0,-1},{
  0,1},{-1,0},{
  1,0}};
int n,m,c,e,x,Gr,hp[N],at[N],mv[N],ad[N][2],st[N][2],gr[N],
    a[N][N],q[N*N*100][2],g[N][N],op[10005][2],f[N][N];
bool bo[N][N],die[N];char s[10005][3];
    int bfs(int sx,int sy,int tx,int ty,int be,int ss)
    {
        for (int i=1;i<=n;++i)
            for (int j=1;j<=m;++j) bo[i][j]=false;
        for (int i=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值