摘要:
一开始看到题目感觉很难然后看到题解感觉这题贼简单,我好像想复杂了就算出每一行最少的资源(完全背包+二分)然后就枚举就好了。 #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时间内的最大空暇时间。这里是更新后来的状态,和以前不一样... 阅读全文
摘要:
这道题的难点在于,前面分组的时间会影响到后面的结果也就是有后效性,这样是不能用dp的所以我们要想办法取消后效性那么,我们就可以把影响加上去,也就是当前这一组加上了s那么就把s对后面的影响全部加上这个做法非常巧妙。#include#include#include#def... 阅读全文
摘要:
这道题题目给的顺序不是固定的所以一开始要自己排序,按照w来排序后来只要看l就可以了然后求最长下降子序列即可(根据那个神奇的定理,LIS模板里有提到) #include#include#include#define REP(i, a, b) for(int i = (a... 阅读全文
摘要:
第一问最长 不上升子序列,第二问最长上升子序列套模板就好https://blog.csdn.net/qq_34416123/article/details/81358447那个神奇的定理当作结论吧#include#include#include#define REP(... 阅读全文
摘要:
f[i]表示从起点到第i个车站的最小费用f[i] = min(f[j] + dist(i, j)), j #include#define REP(i, a, b) for(int i = (a); i e) swap(s, e); REP(i, 2, n + 1) ... 阅读全文