上一页 1 ··· 55 56 57 58 59 60 61 62 63 ··· 67 下一页
摘要: 因为每组至多选择一个物品,可以将每组看做一个整体,这样就类似于01背包问题。 用$f(i,j)$表示前$i$组物品放入一个容量不超过$j$的背包可以获得的最大价值。 对于第$i$组物品: 不放入第$i$组物品,\(f(i,j)\)=\(f(i-1,j)\) 放入第$i$组的第$k$个物品,\(f(i 阅读全文
posted @ 2020-10-02 22:32 Dazzling! 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 暴力拆分 暴力拆分就是把第$i$种物品看做$s_i$个独立的物品,每个物品只有一个,转化为01背包问题。 const int N=110; int f[N]; int n,m; int main() { cin>>n>>m; for(int i=1;i<=n;i++) { int v,w,s; ci 阅读全文
posted @ 2020-10-02 22:25 Dazzling! 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 状态表示:$f(i,j,k,l)\(表示第一个人走到\)(i,j)\(,第二个人走到\)(k,l)$的价值最大值 特判一下坐标相等情况就好了。 const int N=15; int f[N][N][N][N]; int g[N][N]; int n; int main() { cin>>n; in 阅读全文
posted @ 2020-10-02 10:45 Dazzling! 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 和简单瞎搞题 类似 状态表示:\(f[i][j]\) 表示前$i$个数能组成的模3600的数,$f$只有0、1两种状态 答案:判断$f[n][0]$是否为真即可 时间复杂度:\(O(T*n*3600)\),显然无法接受 优化:将bool数组替换成bitset const int N=1e5+10; 阅读全文
posted @ 2020-10-01 20:45 Dazzling! 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 状态表示:$f[i][j]$表示前$i$个数是否能组成数$j$ 状态转移:枚举$x_i$∈$[l_i,r_i]$ 时间复杂度最坏为:$10^{10}$,显然不能接受 空间复杂度为:$100 M$,可采用滚动数组优化 下面针对时间复杂度优化: \(f[i][j]\) 为前$i$个数字能否构成j,考虑第 阅读全文
posted @ 2020-10-01 18:22 Dazzling! 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 正着求一遍$LIS$,反着求一遍$LIS$,最后拿总人数减去满足$T_1<...<T_i>T_{i+1}>…>T_K(1<=i<=K)$的人数即可。 const int N=110; int f[N],g[N]; int a[N]; int n; int main() { cin>>n; for(i 阅读全文
posted @ 2020-10-01 16:25 Dazzling! 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 递推计数,注意边界为$1$和$n$的时候特判一下 状态表示:\(f(i,j)\):传了$i$次球后,球在第$j$个人手中的方案数 状态转移: 填表法:\(f(i,j)=f(i-1,l)+f(i-1,r)\),$l$表示$j$左边的人,$r$表示$j$右边的人 刷表法:\(f(i+1,l)+=f(i, 阅读全文
posted @ 2020-10-01 14:48 Dazzling! 阅读(144) 评论(0) 推荐(0) 编辑
摘要: $01$背包裸题 const int N=10010,M=30010; int f[M]; int a[N],b[N]; int n,m; int main() { cin>>m>>n; for(int i=1;i<=n;i++) cin>>a[i]>>b[i]; for(int i=1;i<=n; 阅读全文
posted @ 2020-10-01 11:18 Dazzling! 阅读(97) 评论(0) 推荐(0) 编辑
摘要: \(n<=15\),直接指数枚举就行,时间复杂度$O(2^n)$ const int N=20; int a[N],b[N]; int c[N],d[N]; int n; LL ans; void dfs(int u,int wealth,int magic) { if(u == n) { ans= 阅读全文
posted @ 2020-10-01 10:53 Dazzling! 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 优先队列$BFS$裸题 const int N=310; char g[N][N]; int dist[N][N]; bool vis[N][N]; map<PII,PII> mp; PII st,ed; int n,m,q; inline bool check(int x,int y) { ret 阅读全文
posted @ 2020-09-30 13:59 Dazzling! 阅读(81) 评论(0) 推荐(0) 编辑
上一页 1 ··· 55 56 57 58 59 60 61 62 63 ··· 67 下一页