2012年8月20日

PKU 2828 Buy Tickets

摘要: 从后往前逐个添加,每次放到第pos[i]+1个空位置上;维护区间内空位置的个数,修改和查询都是二分查找。 1 # include <stdio.h> 2 3 # define ls ((r)<<1) 4 # define rs ((r)<<1|1) 5 # define mid (((x)+(y))>>1) 6 7 # define MAXN 200010 8 9 int p[MAXN], v[MAXN], a[MAXN];10 int sum[4 * MAXN];11 12 void build(int x, int y, int r)13 { 阅读全文

posted @ 2012-08-20 15:08 getgoing 阅读(258) 评论(0) 推荐(0) 编辑

PKU 3468 A Simple Problem with Integers

摘要: 区间修改,询问,带有 lazy tag。# include <stdio.h># define ls ((r) << 1)# define rs ((r) << 1 | 1)# define mid (((x)+(y))>>1)# define MAXN 100005typedef long long int LL;int a[MAXN];LL sum[MAXN * 4];LL lazy[MAXN * 4];void update(int r){ sum[r] = sum[ls] + sum[rs];}void build(int x, int 阅读全文

posted @ 2012-08-20 13:14 getgoing 阅读(194) 评论(0) 推荐(0) 编辑

HDOJ 1698 Just a Hook

摘要: 带 lazy tag 的线段树,维护区间和,含区间修改操作(最后一次询问)。# include <stdio.h># define MAXN (100005 * 4)char lazy[MAXN];int sum[MAXN];void build(int x, int y, int r){ sum[r] = y-x+1; lazy[r] = 0; if (x == y) return ; int mid = (x+y)>>1, ls = r<<1, rs = r<<1|1; build(x, mid, ls); build(mid+1, y, r 阅读全文

posted @ 2012-08-20 11:20 getgoing 阅读(238) 评论(0) 推荐(0) 编辑

PKU 2528 Mayor's posters

摘要: 第三次写这个题了,这次不再用线段树,因为估计了暴力能过(复杂度的估计不太明显,最坏不超过10^8,实际很可能更低或者大部分情况下更低(O(n)))!235ms,超时了几次,猜测是因为memset,所以加了个位优化,AC。 1 # include <stdio.h> 2 # include <stdlib.h> 3 # include <string.h> 4 5 # define id(x) ((x)>>3) 6 # define of(x) ((x)&0x7) 7 # define get(x) ((h[id(x)]>>of 阅读全文

posted @ 2012-08-20 10:40 getgoing 阅读(233) 评论(0) 推荐(0) 编辑

HDOJ 2795 Billboard

摘要: 看了notonlysuccess的博客线段树维护最大值,这道题需要注意的是当h>n时,令h = n,原因是如果wi都小于w,最多只用前n行,反之一定结果是-1。# include <cstdio>int h, w, n, wi;int m[4 * 200010];int Max(int x, int y){ return x > y ? x : y;}void update(int r){ m[r] = Max(m[r << 1], m[r << 1 | 1]);}void build(int x, int y, int r){ m[r] = w 阅读全文

posted @ 2012-08-20 09:16 getgoing 阅读(231) 评论(0) 推荐(0) 编辑

导航