棋盘-做题报告

1|0棋盘

1|0注:我用-1表示没有颜色的格子

这题变态啊。。。一开始没怎么看懂题目就无脑套了DIJKSTRA,然后35分

然后决定用爆搜,然而分数更低了,错的还都是wa。

真的难受,然后就看了波题解,发现做这类题目应该模拟题意去做,比如说:

你可以花费 222 个金币施展魔法让下一个无色格子暂时变为你指定的颜色。 但这个魔法不能连续使用, 而且这个魔法的持续时间很短,也就是说,如果你使用了这个魔法, 走到了这个暂时有颜色的格子上,你就不能继续使用魔法; 只有当你离开这个位置,走到一个本来就有颜色的格子上的时候, 你才能继续使用这个魔法,而当你离开了这个位置 (施展魔法使得变为有颜色的格子)时,这个格子恢复为无色。

我处理时对这个的意思一知半解,认为只要在dfs内加一个last_color的参数然后要搜索是判断即可,如果last_color==a[sx][sy]==-1时continue;

事实证明,这是错误的,例如有一次我搜到了一个没有颜色的格子, 我把它变成成了有颜色的格子,然后开始搜索。 此时last_color的颜色是变成的那个有颜色的颜色没错, 但下一次比较时如果又有一个没颜色的格子, 此时我的last_color是有颜色的啊啊啊啊,然后又再次花费了两金币改变了颜色 可是题意表示:不能连续使用魔法。。。 所以说我:如果last_color==a[sx][sy]==-1continue这个情况 显而易见,是永远都不会出现的

那要怎么办?

很简单,题目不是让你变颜色么?那就照着他说的做啊! 当a[sx][sy]==-1时直接把a[sx][sy]=a[x][y] 直接改变颜色然后进行搜索,然后再加一个flag判断 哟没有连续使用魔法即可。记得搜索完的回溯:a[sx][sy]=-1;

在之后就是为了满分做的可行性剪枝了看了题解没办法啊,直接就写了出来。。。大概就是用一个数组dp[100][100]来存当搜到x,y是的最小值,如果下一次搜到时x,y时的值都大于dp[x][y],那就return了,否则就更新dp[x][y]的值。

2|0总结:题目理解透了再做!!!


__EOF__

本文作者Kdlyh
本文链接https://www.cnblogs.com/kdlyh/p/17777000.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   加固文明幻景  阅读(3)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示