11.8模拟赛总结

赛时

T1 想如果某一行和某一列的最大值相同的话,这个数的位置就可以确定了,但如果一个数只作为某一行的最大值出现了一次,那它所在的列就一定有一个比它大的,所以考虑从大到小往矩形里放数,记录有几列已经放过数字了,那这个数就可以在这几列中任选一列,即 ans 乘上放过数的列的个数,赛时还记录了这一行已经放了几个数,并减去,有点神经,因为一行只有一个最大值,之前一定没有访问过这一行,所以减去的一定是 0 ,对答案没什么影响。最后,如果一个数没有作为最大值出现,就只能放在行列都放过数的空位,即 ans 乘上( (放过数字的行数*列数)-比它大的数)。写的第一版就一下子过了所有样例,我人直接傻眼了(寻思今天也不是大吉呀),此时比赛开始一个多小时。

T2 思考了好一会儿,但没什么头绪,就先写了全排列的暴搜和 k=1 的情况,然后想着可以写个 dfs ,记录当前在哪个点,哪些点下一步必须走,哪些点还可以再等一步,如果必须走的点超过 1 个就 retuen ,这样走的情况会少很多,但并没有调过小样例。

T3打的暴力但是挂了。

T4有点复杂,没看。

赛后

T2正解是状压+记搜,jsy还证明了一下这样做复杂度是 O(n227)
如果没有必走的点的话,下一步不一定要走还可以再等一步的点,我赛时少考虑这种情况了。

posted @   shangruolin  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示