BFS-hdu-3533-Escape

极化码自适应CA-SCL译码(极化码译码) 我们知道最初极化码提出来是运用SC译码,但短码和中等长度其译码性(误码率)能不如LDPC码码,,为了提升有限长度极化码的译码性能,我们主要从译码器的性能和极化码的纠错性能来考虑。 SCL:在增加复杂度的情况下,大幅度增加极化码纠错性能,在高信噪比下,与最优ML性能相同(L=32) CA-SCL:改善最小汉明距离(最小汉明距离增大),增加其纠错性能。把CRC和极化码极联。 自适应CA-SCL:CA-SCL译码虽然提升几乎没的纠错性能,但是导致复杂度大幅度增加,为了降低其复杂度,让L自适应,从而降低其复杂度 阅读详情
题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=3533

题目大意:

给一个m*n的矩阵方格,有k门大炮,每门大炮以t为周期向c方向发射炮弹,炮弹速度为v.

求从(0,0)到(m,n)位置最短的时间,中间不能被炮弹打到,时间不能超过d.

解题思路:

预处理好后就是简单的BFS。

先预处理每个点能够被炮弹射击的所有时刻,然后用vis[x][y][t]判重,表示到达(x,y)位置时刻为t时是否被访问。

代码:

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#define eps 1e-6
#define INF 0x1f1f1f1f
#define PI acos(-1.0)
#define ll __int64
#define lson l,m,(rt<<1)
#define rson m+1,r,(rt<<1)|1
//#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;

/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
*/
bool iscan[120][120][1100]; //预处理所有点,不能停留的时间
bool cas[120][120]; //是否炮弹
bool vis[120][120][1100]; //是否被访问
int m,n,k,d,dir[5][2]={{-1,0},{0,1},{1,0},{0,-1},{0,0}}; //最后一个方向为呆在原地
map<char,int>myp;
char sa[5];

bool isin(int x,int y) //判断是否在网格里
{
   if(x<0||x>m||y<0||y>n)
      return false;
   return true;
}
struct Node
{
   int x,y,t;
   friend bool operator <(const Node & a,const Node & b)
   {
      return a.t>b.t;
   }
};
struct Bome
{
   int x,y,t,v;
   char sa[5];
}bom[110];

void bfs()
{
   memset(vis,false,sizeof(vis));
   Node s;
   s.x=0,s.y=0,s.t=0;
   priority_queue<Node>myq; //以时间为优先因素
   myq.push(s);
   vis[0][0][0]=true;
   while(!myq.empty())
   {
      Node cur=myq.top();
      myq.pop();
      for(int i=0;i<5;i++)
      {
         int x=cur.x+dir[i][0],y=cur.y+dir[i][1];
         int t=cur.t+1;
         if(!isin(x,y)||cas[x][y]||vis[x][y][t])
            continue;
         if(!iscan[x][y][t]||t>d)
            continue;
         if(x==m&&y==n)
         {
            printf("%d\n",t);
            return ;
         }
         vis[x][y][t]=true;
         Node tmp;
         tmp.x=x,tmp.y=y,tmp.t=t;
         myq.push(tmp);
      }
   }
   printf("Bad luck!\n");
}

int main()
{
   int x,y,t,v;
   myp['N']=0,myp['E']=1,myp['S']=2,myp['W']=3;
   while(scanf("%d%d%d%d",&m,&n,&k,&d)!=EOF)
   {
      memset(iscan,true,sizeof(iscan));
      memset(cas,false,sizeof(cas));
      for(int i=1;i<=k;i++)
      {
         scanf("%s%d%d%d%d",bom[i].sa,&bom[i].t,&bom[i].v,&bom[i].x,&bom[i].y);
         cas[bom[i].x][bom[i].y]=true;
      }
      for(int i=1;i<=k;i++)
      {
         x=bom[i].x,y=bom[i].y,v=bom[i].v,t=bom[i].t;
         strcpy(sa,bom[i].sa);
         int dd=myp[*sa],xx,yy,sumt=0;
         while(true)
         {
            sumt++; //枚举时间
            xx=x+dir[dd][0]*v*sumt,yy=y+dir[dd][1]*v*sumt; //到达的位置
            if(!isin(xx,yy)) //跑到了外面
               break;
            bool flag=true;
            for(int j=0;j<v;j++) //这之间是否有大炮
            {
               if(cas[xx-j*dir[dd][0]][yy-j*dir[dd][1]])
               {
                  flag=false; //如果有 则这门大炮到此无用
                  break;
               }
            }
            if(!flag)
               break;
            int tmpt=sumt;
            while(tmpt<=d) //大炮是周期性,所以每隔t时间,又有一门大炮射来
            {
               iscan[xx][yy][tmpt]=false;
               tmpt+=t;
            }
         }
      }
      bfs();
   }
   return 0;
}


安卓风控对抗实战:如何用AOSP定制ROM绕过Momo、AIDA64等检测(从环境搭建到设备画像) 本文详细解析了如何通过定制AOSP ROM绕过Momo、AIDA64等安卓风控检测工具的设备指纹识别。从环境搭建到硬件参数修改,再到内核级特征混淆,提供了一套完整的底层对抗方案,显著提升设备伪装通过率。 阅读详情

相关推荐

开源项目-智能算法中台管理系统

智能算法中台管理系统,系统主要有样本中心,算法中心,模型中心等模块

u010479989的博客 2944

HDU3533EscapeBFS+预处理)

题目在这:传送门 分析:A要从(0,0)跑到(m,n)处,地图各个地方有炮台会发射子弹,A必须要不中弹而且能量用完之前到达(m,n),可以的话输出需要的时间,不行就输出Bad luck! 思路:求最短路径用BFS,而这题情况条件比较多,先要多子弹可能会出现的位置和时间做一个预处理,就先标记好,在BFS的时候绕开子弹 AC代码: #include&lt;iostream&gt; #include&l...

Stark_industry 241

自适应控制 (Adaptive Control) 算法详解及案例分析

自适应控制是一种能够在线调整控制器参数以适应系统动态变化的控制方法。其核心思想是通过实时估计系统参数或调整控制器参数,使系统在不确定性或动态变化的环境中仍能保持稳定性和性能。

闲人编程的博客 4009

HDU 3533 EscapeBFS

题意 ​ ​ A从棋盘(0,0)前往(m,n)每回合消耗一点能量,地图上有一些碉堡,碉堡周期性发射子弹,子弹沿直线运动,每回合在棋盘上一点,碉堡可以拦住子弹的运动,子弹互相不影响,A在移动过程中不能和碉堡子弹处于同一点,输出最短到终点时间,无法到达输出“Bad luck!” 思路 ​ ​ 棋盘上最短路,考虑用BFS或者A*,这题BFS足够 ​ ​ 难点在于每走一到一点,要计算在当前时刻该点有无子弹...

IuSpet的博客 382

HDU3533:Escape(BFS)

Problem Description The students of the HEU are maneuvering for their military training. The red army and the blue army are at war today. The blue army finds that Little A is the spy of the red ar

ACM!荣耀之路! 4455

EscapeHDU - 3533BFS + 模拟)

一.题目链接: HDU-3533 二.题目大意: 第一行 4 个整数 m,n,k,d. m × n 是地图大小,有 k 个炮塔. d 是初始生命值,每秒消耗 1 点生命值. 之后 k 行. 每行有 ch,t,v,x,y. ch = {'N', 'S', 'W', 'E'} t 为该炮塔发射炮弹的间隔时间. v 为该炮台发射子弹的速度. x,y 为该炮台的坐标. A 的初始位...

The___Flash的博客 316

HDU - 3533 EscapeBFS

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3533 需要注意的点: 1,人不能去有城堡的地方 2,子弹不能穿过城堡,遇到城堡子弹不会继续向前射,即使城堡在途中也不行,比如说子弹从(0, 0) 向 (0, 3)射,如果(0, 1)有城堡,子弹会消失。 3,子弹是从时间 t 开始射击的,不是从0开始。 思路就是人先走,然后遍历每一个城堡的射...

Y390d的博客 215

HDU3533 Escape —— BFS / A*算法 + 预处理

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3533 Escape Time Limit: 20000/10000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1792Accepte...

weixin_30325793的博客 71

HDU3533 Escape BFS

HDU3533 Escape BFS

htrdchh的博客 246

HDU 3533 Escape 预处理+bfs

传送门:HDU3533 题意: 一个人从(0,0)跑到(n,m),只有k点能量,一秒消耗一点,在图中有k个炮塔,给出炮塔的射击方向c,射击间隔t,子弹速度v,坐标x,y问这个人能不能安全到达终点要求:  1.人不能到达炮塔所在的坐标 2.炮塔会挡住子弹 3.途中遇到子弹是安全的,但是人如果停在这个坐标,而子弹也刚好到这个坐标,人就被射死(即人只会在整数秒死) 4.人可以选择停止不动思路:先把所

WA是一笔财富 397

HDU 3533 Escapebfs

Escape Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2597    Accepted Submission(s): 754   Problem Description The students of the HEU a...

Emiya丶的博客 420

poj 1768 Hang or not to hang 离散化+搜索+状态压缩

题目链接: http://poj.org/problem?id=1768 题目意思: 给你n种命令,最多32个寄存器,问可能的最少的执行命令次数,使程序终止。 解题思路: 对于不能直接和间接影响JZ中的寄存器的寄存器的状态可以是任意,因为他们每一步都是确定的,最终命令执行的次数与初始状态无关。 所以先找出直接和间接影响JZ中的寄存器的寄存器,由于命令最多只有16个,所以除去STOP

cc_again的专栏 1781

[dfs] UVALive 3667 Ruler

题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1668 Root    Regionals 2006 >> Asia - Beijing 3667 - Ruler Ti

cc_again的专栏 1653

简单搜索(数独)poj 2676 Sudoku

题目链接: http://poj.org/problem?id=2676 题目意思: 数独填数。 解题思路: 可以o(1)检查是否可能。 row[i][j]表示第i行的数j是否已填。(false表示未填,true表示已填) col[i][j]表示第i列的数j是否已填。(false表示未填,true表示已填) bl[i][j]表示第i块的数j是否已填。(false表示未填,tru

cc_again的专栏 1519

BFS+思维-poj-3182-The Grove

题目链接: http://poj.org/problem?id=3182 题目大意: 有一片紧凑的森林不能访问,给一个起点,问从起点出发,可以上下左右斜对角8个方向走,求最小的步数能够围住森林并且回到起点。 解题思路: 思维+BFS. 先找到森林到右边界的一条线段。显然,要求的路径肯定要穿过这条线段。所以从这条线段中的每个点两遍BFS,一遍控制开始的方向非下,另一遍控制开始的方向非

cc_again的专栏 1482

BFS-hdu-4101-Ali and Baba

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4101 题目大意: 给一个矩阵,0表示空的可走,-1宝藏的位置(只有一个),其余的正整数表示该位置石头数。甲乙两个人,轮流玩游戏。甲先玩,谁先从外面通过空路径到达了宝藏的位置(不能经过石头),谁就获胜。如果不能直接到达宝藏位置,可以从外面通过空到某个位置,拿走该位置上的一个石头,如果该位置没

cc_again的专栏 1453

ID(dfs+bfs)-hdu-4127-Flood-it!

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4127 题目意思: 给n*n的方格,每个格子有一种颜色(0~5),每次可以选择一种颜色,使得和左上角相连(颜色相同以及相邻,间接也行)的所有的格子都为该颜色。求最少的步数,使得所有的方格颜色都相同。 解题思路: bfs+bfs死活不给过。 正确解法应该是IDA(dfs+bfs).因为总

cc_again的专栏 1345

BFS+余数判重+数论 hdu-1664-Different Digits

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1664 题目意思: 给一个n,让你找出含不同数字最少的n的倍数,如果含不同数字相同,则输出最小的。 解题思路: 根据数论里面的知识点: 对于任意的整数n,必然存在一个由不多于两个的数来组成的一个倍数。因为a,aa,aaa……取n+1个,则由鸽笼原理,必有两个模n余数相同,相减即得n

cc_again的专栏 1335

[迭代加深dfs] zoj 3768 Continuous Login

题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3768 Continuous Login Time Limit: 2 Seconds      Memory Limit: 131072 KB      Special Judge Pierre is recently obsessed

cc_again的专栏 1327

[dfs] zoj 3736 Pocket Cube

题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3736 Pocket Cube Time Limit: 2 Seconds      Memory Limit: 65536 KB Pocket Cube is a 3-D combination puzzle. It is a 2 ×

cc_again的专栏 1297

BFS hdu-4528 小明系列故事——捉迷藏

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4528 题目意思: 给你一个矩阵,'.‘ 表示能通过,’X' 表示不能通过,告诉你S、D、E 的位置。 问你从S出发在规定的时间内,能否同时找到D和E。只要两个人之间没有障碍,就能找到。 解题思路: BFS,注意记录访问过的节点的时候,要注意状态的确定。 vis[x][y][i][j

cc_again的专栏 1258

怡趣X2投影仪固件 RK3128芯片方案

怡趣X2投影仪固件 RK3128芯片方案

uart串口通信

uart串口通信的Verilog代码实现,基于Vivado平台,可以联合Modelsim进行软件仿真,同时也可以在Source文件夹下查看源码进行别的平台实现

上一篇: 简单概率dp-hdu-4487-Maximum Random Walk
下一篇: 概率dp-poj-2096-Collecting Bugs
Accagain
博客等级 码龄14年 376粉丝 316原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值