摘要: dp非常好想, f[i] = min(f[i-len] + stone[i]) s #include#include#define REP(i, a, b) for(int i = (a); i #include#include#define REP(i, a, b)... 阅读全文
posted @ 2018-09-08 15:39 Sugewud 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 一开始直接用01背包后来发现这个物品和位置有关。也就是价值不是固定的后来看了题解看了卡片最多就4所以这是一个四维费用的背包,每一维是卡片的数量价值就是当前的位置的价值。但是与常规的背包还是有点不同代码中没有枚举物品这一项实际上循环里面的四个卡片的判断语句就是枚举四个物... 阅读全文
posted @ 2018-09-08 14:38 Sugewud 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 和最大正方形很像。记得对角线有两条还有2500不要开成3000,否则会mle#include#include#include#define REP(i, a, b) for(int i = (a); i = 1; j--) { if(a[i][j]) { ... 阅读全文
posted @ 2018-09-08 13:59 Sugewud 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 矩阵旋转在做题的时候会遇到我百度一下想找到已经总结过的模板没找到所以我干脆就自己写了 #include#define _for(i, a, b) for(int i = (a); i <= (b); i++)using namespace std;const int ... 阅读全文
posted @ 2018-09-08 12:09 Sugewud 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 加多一维就行了#include#include#include#define REP(i, a, b) for(int i = (a); i = w1[i]; j--) for(int k = m; k >= w2[i]; k--) f[j][k] = ma... 阅读全文
posted @ 2018-09-08 11:08 Sugewud 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 一看到这道题就是01背包但是我注意到价值和当前的时间有关。没有想太多,直接写,0分然后发现输入方式不对……改了之后只有25分我知道wa是因为时间会影响价值,但不知道怎么做。后来看了题解,发现我对01背包理解不够透彻普通01背包做下来放入物品的顺序是1到n的因为这个时候... 阅读全文
posted @ 2018-09-08 11:00 Sugewud 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 用f[i][j]表示以(i,j)为右下角的最长正方形的边长则 f[i][j] = min(f[i-1][j], min(f[i][j-1], f[i-1][j-1])) + 1;#include#include#define REP(i, a, b) for(int ... 阅读全文
posted @ 2018-09-08 09:51 Sugewud 阅读(121) 评论(0) 推荐(0) 编辑