1313. 老曹骑士 TJ
- 老曹骑士 (Standard IO)
Time Limits: 1000 ms Memory Limits: 65536 KB Detailed Limits
Description
我们的主角——老曹陨落于国际象棋棋盘,成为了一位老曹骑士,于是,他开始走“日”字型路线。
在一张N*N的棋盘上,有K只邪恶的河蟹,骑士曹现在要消灭这些河蟹。
要求曹从任意一只河蟹出发,通过他“日”字型的跳跃,到达这K个点至少一次,并最终回到起点。
现在已知棋盘的大小N,和这K只河蟹的位置(棋盘的左上角坐标记为(1,1),右下角坐标记为(N,N)。
询问:曹最少要跳多少步。
Input
第一行:两个整数,N,K(4<=N<=20,1<=K<=10)
接下来K行:每行两个整数X,Y,表示河蟹所在位置。
Output
一个整数,表示曹所需要条的最少步数。
Sample Input
8 3
2 3
4 5
6 7
Sample Output
12
正解BFS求出每两个河蟹之间的距离,用DFS求最小值。
我的方法:用深搜(记忆化搜索)求出每两个河蟹之间的距离,用全排列求出每种情况下的值,输出最小值即可。
(谢绝co标)code:
usesmath;
vari,j,n,k,l,s,ans:longint;hx:array[1..10,1..2]of longint;//河蟹位置map,a:array[0..21,0..21]of longint;//棋盘和记忆化数组f:array[1..10,1..10]of longint;//记录每两个河蟹之间的距离b:array[1..10]of boolean;//全排列标记sx:array[0..10]of longint;//跳顺序枚举(全排列)fx:array[1..8,1..2]of longint=((1,2),(2,1),(2,-1),(1,-2),(-1,-2),(-2,-1),(-2,1),(-1,2));//老曹可以跳的八个方向
procedure get(x,y:Longint);//求每两个河蟹之间的距离
vart1,t2,j:longint;
beginif i<>map[x,y] thenbeginif map[x,y]>=1 thenbeginif f[i,map[x,y]]>a[x,y]thenbeginf[i,map[x,y]]:=a[x,y];f[map[x,y],i]:=a[x,y];exit;end;end;end;for j:=1 to 8 dobegint1:=x+fx[j,1];t2:=y+fx[j,2];if (t1>=1)and(t1<=n)and(t2>=1)and(t2<=n)thenif a[t1,t2]>a[x,y]+1 thenbegina[t1,t2]:=a[x,y]+1;get(t1,t2);end;end;
end;
procedure dg(x:longint);//全排列
vari:longint;
beginif x-1=k thenbegins:=0;for i:=1 to k-1 dobegins:=s+f[sx[i],sx[i+1]];end;s:=s+f[sx[i+1],sx[1]];ans:=min(ans,s);end;for i:=1 to k dobeginif b[i]=false thenbegininc(sx[0]);sx[sx[0]]:=i;b[i]:=true;dg(x+1);dec(sx[0]);b[i]:=false;end;end;
end;
beginreadln(n,k);if k=1 then begin writeln(0);exit;end;for i:=1 to k dobeginreadln(l,s);hx[i,1]:=l;hx[i,2]:=s;map[l,s]:=i;end;fillchar(f,sizeof(f),100);for i:=1 to k dobeginfillchar(a,sizeof(a),102);a[hx[i,1],hx[i,2]]:=0;get(hx[i,1],hx[i,2]);end;ans:=maxlongint;dg(1);writeln(ans);
end.
1313. 老曹骑士 TJ相关推荐
- 我的朋友老曹,居然用数据工具搞了这么多事
U-Time巡回开启,仅3站(北京/深圳/广州),名额有限!-速戳底部"阅读原文"或者扫二维码抢位- 作者:梁旭鹏,人人都是产品经理专栏作家,<数据产品经理修炼手册>作 ...
- 【SDCC讲师专访】全栈工匠老曹:如何去认识全栈架构师?
2016年11月18日-20日,由CSDN重磅打造的年终技术盛会,SDCC 2016中国软件开发者大会将在北京举行,大会面向国内外的中高端技术人员,聚焦最前沿技术及一线的实践经验,从而助力企业的技术升 ...
- 老曹眼中的研发管理二三事
这是在gitchat上的第一次分享,中生代联手gitchat在做研发管理的专题活动,作为先锋,抛砖引玉. 关于管理,必然会谈到业界先贤德鲁克先生对管理的定义. 管理就是界定企业的使命,并激励和组织人力 ...
- 硬核干货,老曹解密“语音交互”背后的黑科技!
点击▲关注 "中生代技术" 给公众号标星置顶 更多精彩技术内容 第一时间直达 第 6 期出席<大咖来了>直播栏目的嘉宾是百度 DuerOS 首席布道师曹洪伟,进行了 ...
- 老曹眼中的“团队管理”
浮游半生,20多年的IT生涯,一个互联网的老兵,在儿子学琴的时候偷得片刻清闲,在时断时续的钢琴曲中整理一下思绪,记下之言片语. <天下无贼>中的黎叔说,"21世纪最重要的是什么- ...
- [2021.8纪中集训Day14]
文章目录 1312. 老曹的忧郁 题目 思路 代码 1313. 老曹骑士 题目 思路 代码 1314. 稳定的数字 题目 思路 代码 封锁阳光大学 题目 题目描述 输入格式 输出格式 输入输出样例 说 ...
- Bootstrap可以这样学-曹领雄-专题视频课程
Bootstrap可以这样学-123人已学习 课程介绍 课程结构采用思维导图制作,分类清楚,逻辑清晰.可以很直观的了解到所有的Bootstrap的所有内容,相对于官方文档,更适合初学B ...
- 缓存为王:老码农眼中的分布式缓存
本文来自作者 老曹 在 GitChat 上分享 「缓存为王:老码农眼中的分布式缓存」,「阅读原文」查看交流实录. 「文末高能」 编辑 | 哈比 世界是相似的,在商业的世界中,有一句经典语录叫 &quo ...
- 10行 python 代码做出哪些酷炫的事情?
来源 | Python小二 Python凭借其简洁的代码,赢得了许多开发者的喜爱.因此也就促使了更多开发者用Python开发新的模块,从而形成良性循环,Python可以凭借更加简短的代码实现许多有趣的 ...
最新文章
- 双代号网络图节点编号原则_一表多图(表格/横道图/网络图)让计划编制效率提高10倍...
- 日志规范之了解slf4j
- HQL多对多的查询语句
- pip默认使用国内镜像地址
- Could not autowire. No beans of 'xxxx' type found的错误提示
- OS复习——设备管理习题
- java设计模式 外观,精掌握Java设计模式之外观模式(10)
- Javascript特效:瀑布流
- rmd文件怎么转换html文件,如何将Rmd文件的html输出向左对齐
- 笔记本电脑风扇转速测试软件,笔记本温度查看和风扇转速调节工具
- SQL经典50题练习
- c#反编译生成DLL过程
- 解决IDEA中leetcode插件出现中文乱码问题
- 数学建模方法——皮尔逊相关系数及其显著性检验 (Pearson correlation coefficient)
- Git ssh fingerprint不一致
- 计算机三级嵌入式系统知识点考查(易错)
- 解决在HD Audio模式下Windows系统前置面板耳机无声音的问题
- 点击给导航条加背景颜色
- n服登陆显示从服务器断开,魔兽世界N服卡认证、断开连接的解决方法
- C语言编程>第二十四周 ① 请补充fun函数,该函数的功能是判断一个数是否为素数。该数是素数时,函数返回字符串 “yes!”,否则函数返回字符串 “no!”,并在主函数中输出。