- 博客园支持Markdown评论了!主题已经抢先修复样式
- 主题已经升级至V2.0.9,点击查看
- 武汉加油 🇨🇳 中国加油!
- 全国疫情趋势AI预测
- 武汉光谷周边小区疫情地图
随笔分类 - 寒假记录
摘要:11. 背包问题求方案数 思路 求最优方案数可以分成两步 第一步求出最优方案,也就是最大价值 第二部求最大价值下的方案数具体有多少种 而求出当前i,j下最大价值,然后求出相应的方案数即可一步步递推出最终结果 集合划分: 当前最大价值f[i, j]若是等于f[i - 1, j],那么相应方案一定从它转
阅读全文
摘要:1021. 货币系统 思路 完全背包求方案数,与01背包类似 #include <iostream> using namespace std; int n, m; const int N = 20, M = 3010; long long f[M]; int main() { cin >> n >>
阅读全文
摘要:12. 背包问题求具体方案 思路 背包问题求具体方案类似于求最短路径问题 对于求具体方案来说,可以由最后的最大价值逆推 原因是:01背包问题的集合划分就是依靠第i个物品选不选 若选择当前物品,那么当前价值一定是由上一级的f[i - 1][j],或者f[i - 1][j - v[i]] + w[i]转
阅读全文
摘要:A - Yet Another Promotion 题意 给出需要买的物品总个数n,第一天购买物品是a元,第二天购买是b元,且若在第一天购买物品会有优惠:每买m个物品,送一个物品,也就是说在第一天花m个物品的钱可以买m+1个物品 问最少花多少钱可以买至少n个物品 思路 第一步:判断是否使用优惠 若是
阅读全文
摘要:1020. 潜水员 #include <iostream> #include <cstring> using namespace std; const int N = 22, M = 80; int f[N][M]; int n, m, k; int main() { cin >> n >> m >
阅读全文
摘要:A - One and Two 题意 给出长度为n的序列a,a中元素是1或2 找到一个最小的k使a1 * a2 * a3 * .... * ak = ak+1 * ak+2 * ak+3 * ... * an 思路 统计序列中有多少个2,若是奇数个2,则不可能,若是0个,则是第一个,否则设2的数量为
阅读全文
摘要:A1 - Non-alternating Deck (easy version) 题意 给出一个数字n,两个人轮流玩游戏从n中拿数,第一个人首先拿1,第二个人拿2,3,第一个人拿1...循环往复,直到数字全被拿完 思路 模拟即可 void solve() { int n; cin >> n; n -
阅读全文
摘要:记录一下第一次可以写到G1,只剩一道题就可以ak,虽然是div4,不过也值得开心一下。 A - Codeforces Checking void solve() { char c; cin >> c; string s = "codeforces"; bool flag = 0; for (auto
阅读全文
摘要:A - Flip Flop Sum 题意 给出长度为n的序列a,a中只包括1和-1,你必须操作一次,让相邻两个元素由1变-1或由-1变1,问操作后数组总和最大多少 思路 暴力即可 void solve() { int n; cin >> n; vector<int> a(n + 1); int su
阅读全文
摘要:A - Greatest Convex 题意 给出k,要找出最大的x(1 <= x <= k),使x! + (x - 1)! 是k的倍数,问是否存在,为多少 思路 变换一下即可得原式为(x - 1)!(x + 1),若要满足条件,令x = k - 1即可 void solve() { int n;
阅读全文
摘要:A - Hayato and School、 题意 给出长度为n的序列a,要求判断是否存在三个数之和为奇数,若有则输出YES且输出这三个数的下标,否则输出NO 思路 数字和为奇数的情况只有奇 + 偶, 而三个数就可以是奇奇奇,奇偶偶这两种情况。 将序列分为奇偶两个部分,然后判断是否存在这两种情况中的
阅读全文
摘要:A - GamingForces 题意 有n只怪兽,每个怪的血量是,有两种操作: 1.直接消灭这只怪 2.消灭两只血量为1的怪 问最少需要多少次操作可以将怪全部杀死 思路 可以想到,操作二只有在血量为1的怪的数量大于1的情况下才有贡献,血量为1的怪数量越多,用操作二的收益就越大。故而统计血
阅读全文
摘要:A - Everybody Likes Good Arrays! 题意(构造) 给出序列a,需要使a中元素以相邻元素奇偶性不同排列,你可以进行若干操作:将一对相邻奇偶性相同的元素相乘 问最少需要多少次操作 思路 相当于消消乐,奇偶性相同的子序列一定只能保留一个,故观察什么时候奇偶性发生变化即可 vo
阅读全文
摘要:1504B - Flip the Bits (1200) 题意 给出a, b两个01字符串,你可以对a进行操作:选定一个下标i,然后将i以及i之前的所有元素由1变成0,由0变成1,且从开头到下标i的元素中0和1的数量必须相等。问是否可以进行若干次操作使a变成b 思路 题目给出的操作要求很重要,第一个
阅读全文
摘要:1512D - Corrupted Array 题意 给出序列b,含有n+2个元素,其中第n+1个元素是前n个元素的和,第n+2个元素为任意数字,序列b内元素的顺序可能是紊乱的,如果有满足条件的序列,将前n个元素输出,否则输出-1 思路 给出了前n个元素的和,就代表可能要排序。将n+2个元素排序。因
阅读全文
摘要:1710A - Color the Picture 题意 给出n * m 的矩阵和k中颜色,每种颜色有个,要求矩阵每个单元都可以被涂上颜色且每个颜色相邻单元都至少有三个相同颜色,问是否可能 思路 至少有三个相同颜色可以推断出矩阵只可能是每次涂必须要占一行多列,或者多行一列(多:>= 2)
阅读全文
摘要:B. Find The Array 题意:给出序列a,S为a的所有元素之和。要求构造出一个序列b,使b中相邻元素为倍数关系,且b中元素与a中元素差值不能超过S/2. 思路:要求构造倍数关系,那么利用a元素的范围进行构造,构造出从1~,用二分选出与相近的数字,由于每个构造出来
阅读全文
摘要:A - A+B? 题意:给出两个0~9的数字和一个加号。要求输出数字相加的和 思路:用字符串输入,第一位和第三位相加减去两个字符0即为数字和。 void solve() { string s; cin >> s; cout << s[0] + s[2] - 2 * '0' << endl; } $$
阅读全文
摘要:A - Add Plus Minus Sign 题意:给出01字符串,可以在每两个字符中间任意添加‘+’,‘-’。最后要使表达式的绝对值最小 思路:设表达式的值为,若当前大于,不管是0,还是1,都要添加‘-’,如果是1,那么cnt-- 若当前小于等于,不管是
阅读全文
摘要:A - Cut the Triangle 题意:给出一个三角形的三个顶点坐标,可以竖着切可以横着切一刀,问是否能将给出的三角形切成两个三角形 思路:仅有一种情况是不能切得,那就是三角形的三条边有两条分别和x轴和y轴平行。找出这样的三角形即可。我的方法是找到一个顶点x,y坐标有一个都会跟另外一个相同
阅读全文