10 2016 档案
摘要:@kaike 传送门 区间DP弄得我一脸懵 动态方程为f[i][j]=f[i][k]+f[k+1][j]+sum[i][j]; 这题要求出最小中间和,并且要输出方案先预留出所有的中间和设出一个最小值,记录断点所在的位置用con[i][j]就表示从第i个到第j个中第一个括号的位置输出:其中f[1][n
阅读全文
摘要:@kaike 传送门 07年noipT3? 要我写我肯定放弃 嗯没错就是这么果断 据说要 高精 DP 状态? 举例说明,假设有矩阵 a1,a2,a3,a4....an b1,b2,b3,b4....bn 假设矩阵的最大得分取法为 a1*2+b1*2+a2*4+b2*4+a3*8+b3*8+.....
阅读全文
摘要:@kaike 传送门 不会写..弱的一渣。 其实就是一个二维枚举,依次枚举氧气和氮气 加上第i个罐子的氧气和氮气 若氧气大于所要求的就满足 1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 using namespace
阅读全文
摘要:@kaike 传送门 看了半天,不会写 没见过这种题型,看了背包九讲,然而只有很简单的几句话 我认为就是多加了一维,变成三维数组 由于必须恰好等于包的容量,所以要赋最小值 然而不能那样递推为什么我也不知道 还没悟出来 嗯加油 1 #include<iostream> 2 using namespac
阅读全文
摘要:@kaike 1.01背包 有N件物品和一个容量为C的背包。第i件物品的重量是w[i],价值是v[i]。求解将哪些物品装入背包可使价值总和最大。 每种物品仅有一件,可以选择放还是不放。 用f[i][c]表示前i件物品恰好放入容量为c的背包里面,总价值最大。 f[i][c]=max{f[i-1][c]
阅读全文
摘要:@kaike 传送门 就这么简单的题目,我交了四回? 让你用 1-n 个数看是否能组成等式 可以看出 1-n 明显是一个等差数列 恩 数列题刷的都要吐了不过不难 由求和公式Sn=n*(n+1)/2 组成等式 左边=右边=Sn/2 先判断是否有解 设边界f[0]=1 如背包问题 我知道这是一个很恶劣的
阅读全文
摘要:@kaike 传送门 呐么简单我还需要专门写篇博客记录一下? 0/1 背包问题 大经典问题你不记录想等以后忘记嘛 f[i]=max(f[i],f[i-weight]+value) 当前的最优值就是加不加这个东西的价值 依次递推 最大值就是在背包满的时候辣 1 #include<iostream> 2
阅读全文
摘要:@kaike 传送门 这是某年ioi的题?别看我我不知道 光看题目都看不懂 话说要什么花束编号必须按顺序啊 求最大值啊 还要什么输出编号啊 听说DP出方案都是耍流氓 f[i][j]=max(f[i-1][k])+a[i][j] 1 #include<iostream> 2 using namespa
阅读全文
摘要:@Kaike 传送门 一道经典DP,可是书上看不懂,并且代码也是错的。(orz 我错辣) 大概这有几点要求: 1.m本书是顺序排列的,k个抄写员选择书也是顺序且连续的。 2.输出方案,并保证前面的人少抄一点,贪心,让后面的人尽可能多抄一点。 我们可以先枚举人数i,再枚举书的数量j,最后将书的数量j分
阅读全文