SSP P2821 I Like Matrix!
来源:互联网 发布:八字不合怎么办知乎 编辑:程序博客网 时间:2024/06/01 16:55
题目大意:
给定 k 种移动方式:从 (i,j) 移动到 (i + xk ,j + yk )(xk ,yk > 0)。询问在一个 n ∗ m 的矩阵中,从 (1,1) 出发,可以到达多少个位置
n,m ≤ 100,k ≤ 10
题解:
这题也太水了吧,我还怕栈溢出打了广搜,晕。
每次用K种方法去走,然后能走的点扔到队列里继续延伸,之前弄过的点不用重复弄就可以了。
时间复杂度:O(NMK)
var p,v:array [0..101,0..101] of boolean; q:array [0..20001,1..2] of longint; dx,dy:array [0..11] of longint; n,m,k:longint;procedure init;var i:longint;begin readln(n,m,k); for i:=1 to k do readln(dx[i],dy[i]);end;function check(aa,bb:longint):boolean;begin if (aa<1) or (bb<1) or (aa>n) or (bb>m) then exit(false); if p[aa,bb] then exit(false); exit(true);end;procedure bfs;var head,tail,i,x,y:longint;begin head:=0; tail:=1; v[1,1]:=true; p[1,1]:=true; q[1,1]:=1; q[1,2]:=1; while head<tail do begin inc(head); x:=q[head,1]; y:=q[head,2]; for i:=1 to k do if check(x+dx[i],y+dy[i]) then begin v[x+dx[i],y+dy[i]]:=true; inc(tail); p[x+dx[i],y+dy[i]]:=true; q[tail,1]:=x+dx[i]; q[tail,2]:=y+dy[i]; end; end;end;procedure print;var i,j,ans:longint;begin ans:=0; for i:=1 to n do for j:=1 to m do if v[i,j] then inc(ans); writeln(ans);end;procedure main;begin init; bfs; print;end;begin main;end.
阅读全文
0 0
- SSP P2821 I Like Matrix!
- I Like Matrix!
- [JZOJ4838]I Like Matrix!
- JZOJ4838. I Like Matrix!
- Jzoj4838 I like Matrix!
- SSL P2822 I Will Like Matrix!
- I like like you
- SSP
- jzoj 4838. 【GDOI2017模拟11.1】I Like Matrix! 离线处理+暴力
- 2017年11月01日普及组 I Like Matrix!
- 2017年11月01日普及组 I Will Like Matrix!
- I - Matrix
- Why I Like Windows
- i like this man
- I like small font..
- I like swimming...
- I LIKE SQA
- I LIKE SQA
- 用Allegro导出DXF/DWG格式文件
- mathtype小窍门
- 方法传入参数(来自成员变量),在方法中修改参数,退出方法后,是否会改变参数值呢?
- 《Visual C++ 2010入门经典》(第五版)-第七章 自定义数据类型
- 浅析Python中的struct模块
- SSP P2821 I Like Matrix!
- pageScope、requestScope、sessionScope、applicationScope的区别
- tinyxml使用笔记
- 微信小程序ajax请求分页加载数据
- 创业和创业团队的感想感悟
- 开博随笔
- android手把手教你开发launcher(二)——列出安装的应用程序
- androidstudio3.0使用butterknife7.0.1报错解决
- C#导入Excel