随笔分类 -  7搜索

摘要:先跑一边dijkstra算出从1到i的最短距离dis[i] 然后建反向边 从n开始记忆化搜索,(p,k)表示1到p的距离=dis[p]+k的方案数 答案就是$\sum\limits_{i=0}^{k}{(n,i)}$ 考虑0环,如果我记搜的时候搜到了0环,那答案就是-1,可以先用tarjan处理一下 阅读全文
posted @ 2018-11-02 16:35 Ressed 阅读(560) 评论(0) 推荐(0)
摘要:传送门 sbw太神啦orz 首先N<=20可以直接暴搜 然后玄学剪枝可以过18个点 那么N<=40的时候,就把它拆成两半分别暴搜,再用dp拼起来 对于前半段,设f[i][j]是开始高度为i,获得金币为j的方案数;对于后半段,设g[i][j]是结束高度为i,获得金币为j的方案数(离散化一下高度) 然而 阅读全文
posted @ 2018-11-01 09:08 Ressed 阅读(135) 评论(0) 推荐(0)
摘要:可以证明,如果我搜索的话,一个点最多只有两个最优状态:向左剩余步数最大时和向右剩余步数最大时 然后判一判,bfs就好了 dfs会T惨... 阅读全文
posted @ 2018-10-15 20:53 Ressed 阅读(191) 评论(0) 推荐(0)
摘要:由于有相同权值的边不超过10条的限制,所以可以暴搜 先做一遍kruskal,记录下来每个权值的边使用的数量(可以离散化一下) 可以证明,对于每个权值,所有的最小生成树中选择的数量是一样的、而且它们连成的连通块也是一样的 所以我们把每个权值的边分开暴搜所有可能的情况,最后再乘到一起就是答案 阅读全文
posted @ 2018-10-09 10:15 Ressed 阅读(195) 评论(0) 推荐(0)
摘要:我们先bfs一下看看是否能到最底下的所有点 如果不能的话,直接把不能到的那几个数一数就行了 如果能的话: 可以发现(并不可以)某格能到达的最底下的格子一定是一个连续的区间 (因为如果不连续的话,我们先假设中间有一个格x隔开了两个能到的区间,那x一定比那两个区间的端点高,但它又是可达的,那一定有一条路 阅读全文
posted @ 2018-09-19 22:09 Ressed 阅读(230) 评论(0) 推荐(0)
摘要:我想动某个点的话,一定要先把空白点移动到这个点旁边,然后调换这个点和空白点,一直重复 那么,我们就可以记一些状态(x,y,s) (s={0,1},{0,-1},{1,0},{-1,0}),表示我要动的点在(x,y),然后空白点在(x+s.x,y+s.y) 这样的话我们就可以建图:$(x,y,s)-1 阅读全文
posted @ 2018-09-12 20:22 Ressed 阅读(237) 评论(0) 推荐(0)
摘要:题意:给一个树状的文件结构,让你求从某个文件夹出发访问到所有文件,访问路径字符串长度之和的最小值,其中,访问父节点用..表示,两级之间用/分割 做两次dfs,第一次算DownN[x]和DownS[x],分别代表从x/访问到它子树中的文件个数和长度之和 第二次算UpN[x]和UpS[x],分别代表从x 阅读全文
posted @ 2018-09-08 20:49 Ressed 阅读(297) 评论(0) 推荐(0)