随笔分类 -  CF\AT dp

摘要:原题链接 题意:每次加一个数,要求最小 $\sum max_ - min_, 题解:本来以为就是纯贪心,然后发现竟然是区间dp,就是先排完序,然后就加入然后取 \(min\)。 代码: #include <iostream> #include <bits/stdc++.h> using namesp 阅读全文
posted @ 2021-05-27 13:45 u_yan 阅读(41) 评论(0) 推荐(0)
摘要:原题链接 题意:给出一棵树,边权全为 \(1\),要求出所有的距离为 \(k\) 的点对。 题解:暴力树上 \(dp\) 真的没想到,\(dp_{i,j}\) 代表的是距离 \(i\) 点的距离为 \(k\) 的点对数量。 代码: #include <iostream> #include <bits 阅读全文
posted @ 2021-05-14 09:00 u_yan 阅读(31) 评论(0) 推荐(0)
摘要:原题链接 题意:给出一个序列长度为 \(n \leqslant 1e6\),$a_i \leqslant 1e9$然后要求取某些数字,其和为 \(m \leqslant 3000\) 的倍数,是否可以。 题解:先把所有数都作为 \(a_i = a_i \mod m\) 存起来。然后可知,如果数量大于 阅读全文
posted @ 2021-05-08 16:45 u_yan 阅读(154) 评论(0) 推荐(0)
摘要:原题链接 题意:一棵树,有高度,在一维平面上,可以向左向右砍到,不允许重叠,然后求最大砍倒树的数量。 题解:从左往右的话,就现往左倒,如果不可以往左倒,就往右倒。 代码: #include <bits/stdc++.h> using namespace std; typedef long long 阅读全文
posted @ 2021-05-07 12:01 u_yan 阅读(145) 评论(0) 推荐(0)
摘要:原题链接 题意:给一个数字,要求构造一个数字,只通过删除某些位的数,得到的是能整除 \(8\) 的数字。 题解: 代码: #include <bits/stdc++.h> using namespace std; typedef long long LL; const int N = 2e5 + 1 阅读全文
posted @ 2021-05-07 10:39 u_yan 阅读(48) 评论(0) 推荐(0)
摘要:原题链接 题意:有 \(k\) 叉树,边权是从 \(1\) 到 \(k\),要求边权和为 \(n\),至少有一条边的边权大于 \(d\) 的路径总数量。 题解:因为边权连续,所以 \(f_i = \sum_{j = n-k}^{j < i} f_j\) 就是所有情况的路径数量,然后还有就是,\(g_ 阅读全文
posted @ 2021-05-06 11:27 u_yan 阅读(39) 评论(0) 推荐(0)