摘要: 大空间大时间的题,把4个数字分成两份,分别两两求和,得到两个长度n*n的一维数组,排序后比较进行匹配即可。View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>using namespace std;#define maxn 4004int n;int f1[maxn * maxn];int f2[maxn * maxn];int a[maxn], b[maxn], c[maxn], d 阅读全文
posted @ 2011-05-14 21:23 金海峰 阅读(900) 评论(0) 推荐(0) 编辑
摘要: 简单题,先从大到小排序,然后从两端开始向中间看看能不能把右端的匹配给左端。View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>using namespace std;#define maxn 100005int n, m;int f[maxn];int cmp(int a, int b){ return a > b;}int main(){ //freopen("t.t 阅读全文
posted @ 2011-05-14 20:29 金海峰 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 题意:有一个长板子,多次操作,有两种操作,第一种是给从a到b那段染一种颜色c,另一种是询问a到b有多少种不同的颜色。分析:线段树,通过这题才真正理解了线段树的基本思想,无论是更新还是查询都要遵循一个原则,当线段恰好覆盖一个节点的区间时就直接对该节操作而不再向下操作。绝对不能把区间内所有节点全部一代到底,到叶子节点。对于这种线段树,要在获得整块区间时停止并把该节点的end改为true。以后其他更新或询问需要向下走时再按照该节点的信息进行子节点的信息进行修改,然后向下再进行。这题还学到一个重要的技巧,当数据范围较小时一定要考虑位操作。颜色最多30种,用位操作,一个整数可以表示一段的颜色状态。Vie 阅读全文
posted @ 2011-05-14 17:54 金海峰 阅读(3039) 评论(2) 推荐(0) 编辑