随笔分类 -  基础算法 - 模拟/枚举

摘要:题目大意:给定一个长度为 N 的序列,现有两个人从 P 点出发,每个单位时间每个人最多可以移动一个单位,两人之间的最大距离不能超过 M,一共有 T 单位的时间,求在合法情况下,两人可以获得的序列点权和最大是多少。 题解:模拟+贪心 首先考虑最开始的情况,在合法的情况下肯定是扩展的越大越好,在这里用了 阅读全文
posted @ 2019-05-27 09:17 shellpicker 阅读(156) 评论(0) 推荐(0)
摘要:题目大意:给定一个 N\ M 的矩阵,现从 N 行中选出 R 行,M 列中选出 C 列,构成一个 R\ C 子矩阵,求这个子矩阵相邻元素差的绝对值之和的最小值是多少。 题解: 发现是对行和列的组合生成,若直接暴力的话,时间复杂度为 $O({n \choose r}{m \choose c}nm)$。 阅读全文
posted @ 2019-05-09 20:57 shellpicker 阅读(240) 评论(0) 推荐(0)
摘要:A 直接模拟即可。 B 对数组中的值进行排序去重。发现若去重之后的数组中有大于 3 个数时无解,因为无法找到一个点到数轴上四个点的距离均相等。若去重之后的数组中只有三个值,则判断中间的值是否到两边的值相等,若不相等,同理无解,相等则解为距离。若只有两个不同的值,若中点是整数,则答案为中点到左端点的距 阅读全文
posted @ 2019-04-17 16:03 shellpicker 阅读(237) 评论(0) 推荐(0)
摘要:题目大意:给定一个长度为 N 的序列,有 M 个操作,支持将下标为 x 的倍数的数都加上 y,查询下标为 i 的元素的值。 题解:由于查询操作很少,相对的,修改操作很多。若直接模拟修改操作,即:枚举倍数,容易超时。现考虑记录下每次 x 位置的修改值,每次查询一个位置时,只需枚举这个位置的约数,将这个 阅读全文
posted @ 2019-04-09 15:09 shellpicker 阅读(222) 评论(0) 推荐(0)
摘要:题目大意:列出从一个给定上界的双平方数集合中选出若干个数,组成长度为 N 的等差数列的首项和公差。 题解:首先,因为是在双平方数集合上的等差数列,而且根据题目范围可知,上界不超过 2e5,可以先打表,将符合条件的双平方数存入一个数组,并排序离散化。 在等差数列中,只要数列中的前两项确定,整个数列就会 阅读全文
posted @ 2018-11-29 11:07 shellpicker 阅读(393) 评论(0) 推荐(0)
摘要:题目大意:给定一个 N(N using namespace std; const int maxn=110; int n,ans=1,a[maxn]; void read_and_parse(){ scanf("%d",&n); for(int i=1;i 阅读全文
posted @ 2018-11-28 15:55 shellpicker 阅读(189) 评论(0) 推荐(0)