随笔分类 - dp
摘要:https://www.luogu.org/problemnew/show/P5279 以下为个人笔记,建议别看: 首先考虑如何判一个牌型是否含有胡的子集。先将牌型表示为一个数组num,其中num[i]表示牌i出现了几张。 先判七对子(略)。 然后做一个dp。(后面的算法不支持"在最后(i接近n时)
阅读全文
摘要:https://www.luogu.org/problemnew/show/P1415 不会。。 看洛谷题解吧。。 自己的理解:标程做法是:先做一遍dp求出最后一个数开始位置的最大值p,那么就相当于最后一个逗号必须加在p位置左侧;然后反着dp一遍,求出dp[i]表示T(i,n)划分结果中使得第一个数
阅读全文
摘要:https://www.luogu.org/problemnew/show/P2473 https://www.lydsy.com/JudgeOnline/problem.php?id=1076 不会。。 以为是求最大得分的期望(当然要求自己在做第一个决策之前就知道系统每一次要抛的结果),然而看了题
阅读全文
摘要:https://www.luogu.org/problemnew/show/P4095 不太会。。 网上有神奇的做法: 第一种其实是暴力(复杂度3e8...)然而可以A。考虑多重背包,发现没有办法快速删除某个物品造成的贡献。考虑对于每个i,求出an1[i]和an2[i],分别表示对于[1,i]和[i
阅读全文
摘要:https://www.luogu.org/problemnew/show/P1823 自己只会一个log的 设取的人的位置分别是l,r(l<r) 这个做法大概是考虑枚举r,设法对于每个r求出有多少个满足的l 1 #include<cstdio> 2 #include<algorithm> 3 #i
阅读全文
摘要:https://www.luogu.org/problemnew/show/P1121 不会做啊。。。 看题解讲的: 答案的两段可能有两种情况:一是同时包含第1和第n个,2是不同时包含第1和第n个 对于第二种可以先求出f[i],g[i]分别表示1..i和i..n的最大子段和,然后枚举断点解决 对于第
阅读全文
摘要:洛谷P3953 loj2316 uoj331 做题记录: 花了3个小时写了个5K代码(如果是noip现场肯定时间不够了),本地跑大样例跑3秒一组? 结果交上去一看70分,最慢点800ms左右,所有有0边的都错了? 然而事实上这代码这么长大部分就是为了特判0边。。。看来即使noip发现码量不对也要尽快
阅读全文
摘要:https://www.luogu.org/problemnew/show/P1578 题解 另外这题有一些小坑,洛谷的题解里面有讲 1 #pragma GCC optimize("Ofast") 2 #include<cstdio> 3 #include<algorithm> 4 #include
阅读全文
摘要:洛谷P1169 bzoj1057 这个题目跟最大全0子矩阵是类似的。正方形的话,只要把任意极大子正方形(”极大“定义见后面的”论文“)当成把某个极大子矩形去掉一块变成正方形即可,容易解决。 解法1:看论文里面的“算法2“(那个是最大全0子矩阵方法,改一下就可以用在此题) 1 #include<cst
阅读全文
摘要:https://codeforces.com/contest/650/problem/D 原题? http://210.33.19.103/contest/1024/problem/2 4s 520M 题解很明白了: 当初想错了,想用stormwind的做法去做,发现要维护 给出数组a,f,gj<i
阅读全文
摘要:https://codeforces.com/contest/958/problem/E2 首先求出N个时刻的N-1个间隔长度,问题就相当于在这些间隔中选K个数,相邻两个不能同时选,要求和最小 方法1: 一个K^2的做法,有一定技巧 https://www.cnblogs.com/void-f/p/
阅读全文
摘要:https://www.luogu.org/problemnew/show/P2623 https://www.luogu.org/blog/test-1/solution-p2623 重点就是甲类物品最多取一个,一定能取到最优解。。。
阅读全文
摘要:http://codeforces.com/problemset/problem/919/D 就是先判环,如果有环就-1,否则对每个字母分开跑一下dp 错误记录: 1.有向图判环,自环一定要特判!(不能直接用强连通) 2.思考的时候很容易跑偏,去想把各个字母合在一起dp,不知道为什么?
阅读全文
摘要:( ||{集合x}表示x中元素1||x中元素2||...||x的最后一个元素||(a,b)表示a||b) ans[i][j][k]表示考虑前i种邮票时取j个邮票能否得到面值kans[i][j][k]= ||{ans[i-1][j-p][k-p*a[i]]}(0<=p<=j,p*a[i]<=k)ans
阅读全文
摘要:这题太毒了。。。。一开始就是死活想不到,结果看了很多遍题解,重新做的时候还是做不出来。。 好像有一点被错误的题解误导了?
阅读全文
摘要:ACboy needs your help HDU - 1712 ans[i][j]表示前i门课共花j时间最大收益。对于第i门课,可以花k(0<=k<=j)时间,那么之前i-1门课共花j-k时间。 错误记录: 21行一个0写成1 错误记录: 21行一个0写成1
阅读全文
摘要:The Fewest Coins POJ - 3260 完全背包+多重背包。基本思路是先通过背包分开求出"付出"指定数量钱和"找"指定数量钱时用的硬币数量最小值,然后枚举找的钱,那么付出的钱也随之确定,对于每个枚举出的找的钱可以得到一个答案,那么枚举所有可能的找的钱取答案的最大值即可。 这里有一个对
阅读全文
摘要:Triangular Pastures POJ - 1948 sum表示木条的总长。a[i]表示第i根木条长度。ans[i][j][k]表示用前i条木条,摆成两条长度分别为j和k的边是否可能。 那么ans[i][j][k]=ans[i-1][j-a[i]][k] || ans[i-1][j][k-a
阅读全文
摘要:Ignatius and the Princess III HDU - 1028 整数划分问题 假的dp(复杂度不对) 1 #include<cstdio> 2 #include<cstring> 3 typedef long long LL; 4 LL ans[122][122]; 5 LL n,
阅读全文