摘要:
这真是一道好题目学到了很多一开始感觉吃或者不吃会有后效性然后看到洛谷的题解,直接把这个有后效性的部分当作dp的维度和值因为这个垃圾可以堆或者不堆,所以这个很像01背包,但是加了非常多的限制条件,是一个升级版的01背包 记住思考01背包问题的时候,要思考i那一维度,最... 阅读全文
摘要:
没看出来动规怎么做,看到n #include#include#define REP(i, a, b) for(int i = (a); i #include#include#define REP(i, a, b) for(int i = (a); i = 0; i--... 阅读全文
摘要:
好气,在洛谷上交就过了,在caioj上交就只有40分之前在51nod做过这道题了。https://blog.csdn.net/qq_34416123/article/details/81809024 #include#include#include#define RE... 阅读全文
摘要:
记住一定要区分n和m分别代表什么,我已经因为这个两道题浪费很多时间了然后这个道题有点类似最长上升子序列n平方的做法,只是判断的条件不同而已#include#include#include#define REP(i, a, b) for(int i = (a); i =... 阅读全文
摘要:
每个素数就是一个物品,然后就相当于求完全背包方案数把max改成+就好了。#include#include#include#define REP(i, a, b) for(int i = (a); i prime;ll f[MAXN];void get_prime()... 阅读全文
摘要:
非常奇怪的是,我在Vijos 1071能AC,在caioj 就只有50分可以和前面一道题一样算方案,如果大于1就是多解然后就输出方案就好了#include#include#define REP(i, a, b) for(int i = (a); i = w[i]; j... 阅读全文
摘要:
方程很简单f[0] = 1f[j] += f[j-w[i]]#include#define REP(i, a, b) for(int i = (a); i = w[i]; j--) f[j] += f[j-w[i]]; printf("%d\n", f[m]); ... 阅读全文
摘要:
一开始看到题目感觉很难然后看到题解感觉这题贼简单,我好像想复杂了就算出每一行最少的资源(完全背包+二分)然后就枚举就好了。 #include#include#include#define REP(i, a, b) for(int i = (a); i k) sum ... 阅读全文
摘要:
这道题的难点在于价值可以多。这道题我一开始用的是前面的状态推现在的状态实现比较麻烦,因为价值可以多,所以就设最大价值为题目给的最大价值乘以10#include#include#include#define REP(i, a, b) for(int i = (a); i... 阅读全文
摘要:
这道题我一直按照往常的思路想f[i]为前i个任务的最大空暇时间然后想不出来怎么做……后来看了题解发现这里设的状态是时间,不是任务自己思维还是太局限了,题做得太少。很多网上题解都反着做,那么麻烦干嘛设f[i]为前i时间内的最大空暇时间。这里是更新后来的状态,和以前不一样... 阅读全文