随笔分类 - dfs
摘要:题面 这道题是一道数位DP的模板题; 因为窝太蒟蒻了,所以不会递推,只会记忆化搜索; 首先,咋暴力咋来; 将一个数分解成一个数组,这样以后方便调用; 数位DP的技巧:(用1~b的答案)-(1~a的答案)就是(a~b的答案); 那么对于每个数码i,我们做两次dfs(分别以a为上界和以b为上界); 设正
阅读全文
摘要:题面 这种数据范围不是乱搞dfs就是乱搞状压DP 首先应该通过任一方式求出a和b的值; 任意一条抛物线只用两头猪就可以确定,所以我们N^2枚举,并把在这两头猪的抛物线上的猪都存进状态state[i][j]; 然后枚举任意两个还没消灭的小猪i,j;f[i|state[j][k]]=min(f[i|st
阅读全文
摘要:题面 首先发现:一个数最多会出现1次; 然后深入推出:一个数不会既用它又用它的相反数; 这样就可以依次考虑每一位了: 如果所有的数都不含有这一位,那么就直接把所有的数除以2 如果含有,那么就减去这一位的数,再除以2; 2 当含有的时候搜索就可以了; 注意需通过去重来优化dfs,否则会TLE掉;
阅读全文
摘要:题面 这道题是一道不错的计数类DP; 首先我们一定要跑一遍dijkstra来求得每个点到1号点的最短路; 注意题干,题中并没有说所有点都可以到达n好点,只说了存在一条1号点到n号点的路径;所以我们在反向图上BFS求出那些点可以到达n号点; 然后就是dp。我们设计状态:f[u][rest]表示到达u号
阅读全文
摘要:题面 一句话题意:找一个点使得,使得从这个点出发作为源点,发出的流量最大,输出这个最大的流量 这道题是换根法+二次扫描的模板; 首先若确定1为原点,那么可以写出dp方程:当v的度是1时, g[u]+=g[v];否则g[u]+=min(g[v],star[i].w); 但以上仅仅是有原点的做法,那么如
阅读全文
摘要:八皇后问题一般情况下朴素的深搜就可以了,但可以对其进行二进制优化(这大概是目前最优的深搜算法): 用二进制表示状态.1表示该点不能放(与其他位置的皇后排斥或初始状态就不能放).0表示该点可以放皇后; dfs保存四个参数:之前所有行的状态,从左上到右下对角线的状态,从右上到左下对角线的状态,当前为第几
阅读全文