codefoces
Zhousom
这个作者很懒,什么都没留下…
展开
-
codefoces 730J
codeforces 730J题目链接(luogu)https://www.luogu.org/problemnew/show/CF730J 首先讲这道题分析一下。杯子分为倒与不倒,01背包。 确立背包内容:k易得,在众多抉择中选出最佳的决策。 本题有两种思路,一种是用水做dp,一种是用体积做dp,只说第一种(空间更小)。 目的是用k个杯子并让其中的水最多。(t最小) 首先决定为dp_i_原创 2018-02-28 09:57:27 · 217 阅读 · 0 评论 -
codefoces 623E
本题采用技巧。 首先不难看出本质一个有区别的完全背包。 但是输出的是所有(ALL)而非最优,这很不dp。 先放下这一点,为了状态完整,那么选择用价值做状态,数量做量。 dp[i][j]=min{dp[i-1][j-a[i]]+1,dp[i][j]); 自然能够水掉一维。 回到刚才那个问题,有些量例如1,3,7 k=3 那么dp[7]=1 但dp[7]可以有3,3,1组成 min和...原创 2018-02-28 22:46:49 · 181 阅读 · 0 评论 -
CF830A Office Keys
水题? 初始化一下 dp[i][j]为第i个人拿了第k把钥匙花的时间 dp[i][j]=min(dp[i][j-1],max(dp[i-1][j-1],abs(a[i]-b[j])+abs(b[j]-p))); 为啥第二个是max呢,因为为了让最大的最小,所以让最小的最大,不证.#include<iostream>#include<algorithm>#...原创 2018-02-28 22:56:38 · 170 阅读 · 0 评论 -
CF149D Coloring Brackets
区间dp的题.思路可先用stake将每个位置的括号的匹配找出来,我们把他叫love数组 即lovei=jlovej=ilovei=jlovej=ilove_i=j \\love_j=i(当然他们匹配) 我们可以开一个数组叫dp[i][j][0/1/2][0/1/2] 表示在左端点为i右端点为j左端点染了0/1/2右端点染了0/1/2时的方案数 分类讨论当二者相邻,dp[l...原创 2018-02-28 23:34:00 · 209 阅读 · 0 评论 -
CF148E Porcelain
预处理出每一个柜子砸1->柜子.size,个东西的最大代价,大概用前缀和一求便好了 然后dp,裸的背包#include<bits/stdc++.h>#define LL long longusing namespace std;int a[10005];int dp[105][10005];int jia[105][10005];int ks[105][10...原创 2018-02-28 23:37:48 · 265 阅读 · 0 评论