摘要: 状态表示:$f(i,j)$表示从前$i$个物品中选,总体积不超过$j$的情况下的最大价值。 和01背包一样,完全背包问题的每种物品都有两种策略,但是也有不同点。 对第i件物品来说: 不放第i件物品,那么f[i][v]= f[i- 1][v], 这步跟01背包是一样的。 放第i件物品。这里的处理和01 阅读全文
posted @ 2020-09-19 17:31 Dazzling! 阅读(110) 评论(0) 推荐(0)
摘要: 状态表示:$f(i,j):$从前$i$个物品中选,总体积不超过$j$的情况下的最大价值 (蓝书上定义的是总体积为$j$的最大价值,初始化时要作出相应的修改) 状态转移: 选第$i$个物品:\(f(i,j)=f(i-1,j-v_i)+w_i\) 不选第$i$个物品:\(f(i,j)=f(i-1,j)\ 阅读全文
posted @ 2020-09-19 17:17 Dazzling! 阅读(114) 评论(0) 推荐(0)
摘要: 我的思路(还是想了些许时间的): 按照题目的闭合圈的规定: 闭合圈由数字1构成 围圈时只走上下左右4个方向 方阵内只有一个闭合圈,圈内至少有一个0 可知从上到下, 从左到右遍历到第一个为1的格子的右下角必定为圈内的0,然后就是bfs填充连通块了 const int N=35; int g[N][N] 阅读全文
posted @ 2020-09-19 14:49 Dazzling! 阅读(145) 评论(0) 推荐(0)
摘要: flood-fill const int N=110; char g[N][N]; int n,m; int res; inline bool check(int x,int y) { return x>=0 && x<n && y>=0 && y<m; } void bfs(int x,int y 阅读全文
posted @ 2020-09-19 11:29 Dazzling! 阅读(158) 评论(0) 推荐(0)
摘要: 水题,组合型枚举 const int N=10; int path[N]; int n; void dfs(int u,int sum,int last) { if(sum > n) return; if(sum == n) { for(int i=0;i<u;i++) if(i) cout<<"+ 阅读全文
posted @ 2020-09-19 09:40 Dazzling! 阅读(194) 评论(0) 推荐(0)
摘要: 无脑暴搜 const int N=110; char g[N][N]; bool vis[N][N]; int n; string str="yizhong"; bool check(int x,int y) { return x>=0 && x<n && y>=0 && y<n; } void d 阅读全文
posted @ 2020-09-19 09:31 Dazzling! 阅读(225) 评论(0) 推荐(0)
摘要: 这题wa了有点久。。。对bfs理解更深刻了(bfs第一次扩展到即为最短距离)。 大体上和bfs模板差不多,只是增加了传送门,且题意规定一旦到达传送门立即传送。 只需要将当前扩展的结点变为传送到的结点即可,在判断dist数组是否为-1 dist数组即标记数组vis,第一次更新时即为最短。 const 阅读全文
posted @ 2020-09-18 19:31 Dazzling! 阅读(229) 评论(0) 推荐(0)
摘要: bfs裸题,输出sb const int N=410; int dist[N][N]; PII st; int n,m; bool check(int x,int y) { return x>=1 && x<=n && y>=1 && y<=m; } void bfs(int x,int y) { 阅读全文
posted @ 2020-09-17 20:44 Dazzling! 阅读(134) 评论(0) 推荐(0)
摘要: 暴搜,回溯 const int N=10; bool g[N][N]; int ans; PII st,ed; int n,m,k; inline bool check(int x,int y) { return x>=1 && x<=n && y>0 && y<=m; } void dfs(int 阅读全文
posted @ 2020-09-17 20:31 Dazzling! 阅读(164) 评论(0) 推荐(0)
摘要: 数据范围10,巨小,直接dfs枚举。 指数型枚举,注意至少要选一个物品。 const int N=15; PII a[N]; int ans=INF; int n; void dfs(int u,int muls,int sumb) { if(u == n) { if(muls == 1 && su 阅读全文
posted @ 2020-09-17 19:22 Dazzling! 阅读(285) 评论(0) 推荐(0)