题目 用 k 个矩形覆盖所有点,矩形的边平行于坐标轴。问题是当 n 个点坐标和 k 给出后,使得覆盖所有点的 k 个矩形的面积之和为最小。约定:覆盖一个点的矩形面积为 0;覆盖平行于坐标轴直线上点的矩形面积也为0。各个矩形必须完全分开(边线与顶点也都不能重合)。 分析 可以用dp,先离散。 f [ i ] [ j ] [ i 1 ] f[i][j][i1] f[i][j][i1]表示覆
题目及O( n l o g 2 n nlog_2n nlog2n)做法 分析 其实我们也可以用O(n)来做,首先来个桶排。 再用一个单调队列存下两个最小值,不断更新。 代码 #include <cstdio>#include <cctype>using namespace std;short t[20001],l,r,min[2],n,head; int a[30001],
题目 每台电脑最多只能有一人操作,一个人最多只能操作一台电脑;并且每款游戏最多只能在一台电脑上玩,每台电脑最多运行一个游戏。现在佳佳想知道,假如佳佳共有 M M M台电脑,且佳佳一共叫来了 P P P个同学,最多能得到多少单位的经验。 分析 离散。 坑点 答案开long long共有p+1个人(所以如果你不调整还是会炸掉)挑最小值 分析 #include <cstdio>#i