摘要:
先将高度值离散,映射到小范围,然后统计每个高度到下一个高度之间的总容积,最后从下到上不断模拟“填水”的过程。#include #include using namespace std;const int maxN = 50001;int n, v;double lev;int b[2*maxN], h[maxN], w[maxN], d[maxN], cx[2*maxN], cv[2*maxN];int *p[2*maxN];void input();void process();void compress(int *, int *);int cmp(const void *sa, const 阅读全文
posted @ 2014-02-23 16:51
莞中OI
阅读(250)
评论(0)
推荐(0)
摘要:
本题与《矩形面积》类似,只不过将点的个数变多,但点坐标的取值范围变小,并且每个点多了一个颜色属性而已。#include #include using namespace std;const int maxN = 1010;int n, m, a, b;int x[2*maxN], y[2*maxN], cx[2*maxN], cy[2*maxN];int *p[2*maxN];int map[2*maxN][2*maxN];int color[maxN], ans[2501];void input();void process();void compress(int *, int *);int 阅读全文
posted @ 2014-02-23 16:43
莞中OI
阅读(247)
评论(0)
推荐(0)
摘要:
离散思想的简单题目,只要掌握了离散思想,本题并不难。首先是快排,根据排序结果压缩横坐标和纵坐标,压缩后横纵坐标的最大值不大于 200,于是就可以用模拟的方法找到结果。#include #include using namespace std;int n, re;int x[200], y[200], c[100], tp[100];int *p[200];int map[200][200];void input();void process();void compress(int *);int cmp(const void *sa, const void *sb);int main(){ in 阅读全文
posted @ 2014-02-23 16:31
莞中OI
阅读(210)
评论(0)
推荐(0)
摘要:
先排序,再离散,然后模拟。问题是,排序之后,读入时的依赖关系就丢失了。比如读入时左下角坐标放在位置2*i,右上角坐标放在位置2*i+1;或者左下角坐标放在位置i,右上角坐标放在位置i+n。——这些就是依赖关系,排序之后,这些依赖关系可能就丢失了!怎么办?以X坐标为例,一种解决方法是,用P[i]表示X[P[i]] 的坐标,不要对原数组X[i]排序,而是对P[i]排序。对P[i]排序不是比较P[i],而是比较X[P[i]]。#include #include using namespace std;int n;__int64 re;int x[200], y[200], cx[200], cy[2 阅读全文
posted @ 2014-02-23 16:22
莞中OI
阅读(240)
评论(0)
推荐(0)

浙公网安备 33010602011771号