摘要: 想了很久没想出来,无奈之下看了题解。 如果 a[i] < a[j] ,因为要保证都是整数,所以 j - i 必须要小于 a[j] - a[i] ,才能使区间 i,j 内的所有数均可修改。 j - i < a[j] - a[i] 移项得 a[i] - i < a[j] - j。 所以 a[i] 里要存 阅读全文
posted @ 2020-12-04 22:28 樱雪喵 阅读(268) 评论(0) 推荐(1) 编辑
摘要: 思路: 先从左到右求一遍最长不下降子序列,再同样方法从右到左求一遍。 然后我们枚举分界点,则总人数就是左边一半加上右边一半的人数。 取最大值,输出答案。 见注释。 #include<bits/stdc++.h> using namespace std; int n,a[101],f1[101],f2 阅读全文
posted @ 2020-12-04 21:40 樱雪喵 阅读(156) 评论(0) 推荐(1) 编辑
摘要: 用时 10min ,一遍过。 设 f[i][j] 表示第一个字符串的前 i 位和第二个字符串的前 j 位最长公共子序列的长度。 当比较的这两个字母相同时,f[i][j] = f[i-1][j-1] + 1 。 否则 f[i][j] = max(f[i-1][j],f[i][j-1]) 。 #incl 阅读全文
posted @ 2020-12-04 21:02 樱雪喵 阅读(56) 评论(0) 推荐(1) 编辑
摘要: 题目要求硬币的数量有限制,所以可以开 b 数组记录当前该物品所取的件数。 其中 b[j] 表示要想让 f[j] = 1 ,第 i 件物品至少需要 b[j] 个。 f[i] 表示 i 能否被表示出来,能则为 1 ,否则为 0 。 总结下自己的问题: 1. b 数组要清零。 2. f 数组要赋初值。 具 阅读全文
posted @ 2020-12-04 20:42 樱雪喵 阅读(95) 评论(0) 推荐(0) 编辑