摘要: 水题 我们肯定向前传送 求长为k的最大连续子段和,然后总长减去就行了 const int N=1e6+10; LL a[N]; LL sum[N]; int n,k; int main() { cin>>n>>k; for(int i=1;i<=n-1;i++) cin>>a[i],sum[i]=s 阅读全文
posted @ 2020-09-19 21:24 Dazzling! 阅读(188) 评论(0) 推荐(0) 编辑
摘要: const int N=510; int a[N][N]; int f[N][N]; int n; int main() { cin>>n; memset(f,-0x3f,sizeof f); f[0][0]=0; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++ 阅读全文
posted @ 2020-09-19 21:06 Dazzling! 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 状态表示:$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! 阅读(105) 评论(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! 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 我的思路(还是想了些许时间的): 按照题目的闭合圈的规定: 闭合圈由数字1构成 围圈时只走上下左右4个方向 方阵内只有一个闭合圈,圈内至少有一个0 可知从上到下, 从左到右遍历到第一个为1的格子的右下角必定为圈内的0,然后就是bfs填充连通块了 const int N=35; int g[N][N] 阅读全文
posted @ 2020-09-19 14:49 Dazzling! 阅读(137) 评论(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! 阅读(153) 评论(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! 阅读(183) 评论(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! 阅读(218) 评论(0) 推荐(0) 编辑