摘要: $0-1$背包裸题 const int N=110,M=1010; int f[M]; int n,m; int main() { cin>>m>>n; for(int i=1;i<=n;i++) { int v,w; cin>>v>>w; for(int j=m;j>=v;j--) f[j]=ma 阅读全文
posted @ 2020-12-15 21:13 Dazzling! 阅读(113) 评论(0) 推荐(0) 编辑
摘要: $LIS$简单变形。 状态表示: \(l[i]\):$1~i$的最长上升子序列长度 \(r[i]\):$i~n$的最长下降子序列长度 注意最后是输出出列的人数=_=。 const int N=110; int a[N]; int l[N],r[N]; int n; int main() { cin> 阅读全文
posted @ 2020-12-15 21:03 Dazzling! 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 经典的区间$DP$问题。 区间$DP$特征:从小区间逐渐向大区间扩展递推。 题解 贪心只能处理“任取两堆”,而不能处理“相邻两堆”。任取两堆的题目就是合并果子。 状态表示:\(f(i,j)\):合并区间$[i,j]$的最小代价 状态转移:$f(i,j) = \begin0,i = j\ \under 阅读全文
posted @ 2020-12-15 20:38 Dazzling! 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 经典哈夫曼树的模型,每次合并重量最小的两堆果子即可。 const int N=10010; int a[N]; int n; int main() { cin>>n; priority_queue<int,vector<int>,greater<int> > heap; for(int i=1;i< 阅读全文
posted @ 2020-12-15 20:14 Dazzling! 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 浮点数的比较 //符号函数 int sgn(double x) { if(fabs(x) < eps) return 0; else return x<0?-1:1; } //浮点数的比较 int cmp(double x,double y) { if(fabs(x-y) < eps) return 阅读全文
posted @ 2020-12-15 19:21 Dazzling! 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 新名词$get$:序列自动机 思路挺好想的,一共$n$个位置,对每个位置建立$26$个指针,指向后面第一次出现对应字母的位置。倒序处理一遍即可。 注意: 不存在对应字母的话位置记为$0$ 下标$0$也要初始化 子序列进行匹配时从下标$0$开始匹配,下标$0$存放的指针代表$1~n$中第一次出现对应字 阅读全文
posted @ 2020-12-15 17:32 Dazzling! 阅读(151) 评论(0) 推荐(0) 编辑