首页 > 其他分享 >10.16 CW 模拟赛 D. 迷宫(maze)

10.16 CW 模拟赛 D. 迷宫(maze)

时间:2024-10-17 08:51:06浏览次数:1  
标签:短路 算法 dijkstra mathcal maze 10.16 CW dp 关键点

题面

传统 T4 找不到原题
挂个 pdf
题面下载

算法

不容易想到把出发点, 有被困同伴的人称作关键点
那么只需要求出关键点之间, 关键点到任意一个终点的最短距离, 然后在搜索即可求解

dijkstra 算法求单源最短路

\(n > 10^3\), 显然会 T 飞

dijkstra 算法求单源最短路

\(\mathcal{O}(k m \log m + k!)\)
只能通过 \(50\%\) 的点

状态压缩 dp + 堆优化 dijkstra

观察到 \(k\) 很小, 考虑优化搜索

状态定义

用 \(f_{i, S}\), 表示当前在 \(i\) 点, 经过的关键点集合为 \(S\) 时, 最短路径

边界条件与初始化

\[f_{i, 1 \mathcal{<<} i} = dis_{i, s} \]

状态转移方程

\[f_{i, \mathcal{S}} = \min^{j = 1}_{k} (f_{j, \mathcal{S} - (1 \mathcal{<<} i)} + dis_{i, j} \times SIZE_\mathcal{S}) \]

时间复杂度

代码

后补

总结

对于一些有多个阶段(本题中为解救同伴)这一类型的题目

  • 分层图
  • 全源最短路
  • dp

本题中将每一个特殊点抽象出来的思路值得学习
搜索效率不高时考虑转化 dp

标签:短路,算法,dijkstra,mathcal,maze,10.16,CW,dp,关键点
From: https://www.cnblogs.com/YzaCsp/p/18471291

相关文章

  • 10.16日
    xmlmysqlmysql-connector-java8.0.33连接到MySQL数据库并执行简单的查询。javaimportjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;importjava.sql.SQLException;publicclassDatabaseConnection{......
  • java学习10.16
    继续java图形化页面的学习,今天学的是页面的分区和布局importjava.awt.*;publicclass_1016{publicstaticvoidmain(String[]args){Frameframe=newFrame();frame.setBounds(500,500,300,300);frame.setAlwaysOnTop(true);//边界布局//BorderLay......
  • 10.16随笔
    这里是10.16随笔。今天我在数据结构上学习了有关二叉树的知识,同时将pta上的作业写了一点。作为记录,我把代码复制了过来:输入一个字符串,判断该字符串是否为回文。回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。(不含空格)输入格式:先输入字符串的长度,不超过100......
  • 10.16 总结
    T1赛时拿的30分暴力,没想到60分,但是预期:30pts,实际:30pts正解把一个人劈成四瓣,然后用树状数组维护不是\(i\)这个人以外的\(0,a_{(i,0)},a_{(i,1)},a_{(i,1)}+a_{(i,0)}\)以上的所有人的个数,最后除以\(16\),就行了。T2赛时时正解,然后因为没有写check然后就小样例......
  • 2024.10.16 近期练习
    CF1442DSum很显然可以设\(f_{i,j}\)表示当前处理了前\(i\)个数组,选了\(j\)个数的最大值,然而转移需要\(O(k)\)。考虑挖掘题目数据元素非降的性质。猜个结论呢?因为元素是逐渐变大的,所以越往后选就一定越优。所以,至多只有一个数组没有被选完。这个很像NF0921D。考虑分治......
  • 2024.10.16 鲜花
    PRAGMATISM-RESURRECTION凭什么没词就不是好歌!!!取模优化就不讲怎么减少取模了。比较广为流传的有两种,Barrettreduction,MontgomeryAlgorithm。对于固定常数模数,计算机已经优化的很好了,一般不会有太大效果(确实有,用Barrettreduction有时可以卡常)。对于输入的固定模数(即......
  • 10.16学习日志
    一.Python函数1.定义一个函数什么是函数函数是可以重复执行的语句块,可以重复调用作用用于封装语句块,提高代码的重用性。函数是面向过程编程的最小单位1.1def语句作用用来定义(创建)函数语法说明函数代码块以def关键词开头,后接函数标识符名称和圆括......
  • 2024.10.16 模拟赛
    2024.10.16模拟赛T1divide简要题意给定一棵树的\(n\)个结点以及每个结点的\(fa_i\),每个点的点权\(v_i\),删除树中的两条边,将树拆分为三个非空部分。每个部分的权值等于该部分包含的所有节点的权值之和。出一种合理的拆分方案。根节点的\(fa_i=0\)\(n≤10^6\)solution......
  • 10.16 补题记录
    https://codeforces.com/gym/105386/problem/EE题:要求gcd最大值然后可以改变一次数组使选中的那一节增大k,然后我们一开始想dp[i][0/1][0/1]来维护前i个里这个数加k/不加k,以及之前加k/不加k,看起来非常的完美吧然后wa15了,是因为我们每次只记录了一个点的一种值但是一个点有可能......
  • 10.16 模拟赛
    炼石计划9月29日NOIP模拟赛#5【补题】-比赛-梦熊联盟(mna.wang)复盘T1有80的暴力。想了一会正解但不会做于是放弃了。T2。怎么这么像双栈排序?操作3是什么鬼?\(n\le5\)爆搜不会打?不管了先跳了。T3。一眼蒙德里安的梦想+矩阵加速。复杂度未知,说不定是正解,不......