135 条题解
-
0李豁然 LV 10 @ 2009-07-29 11:50:24
括号序列+树状数组果然牛!
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms评测机是Vijos Dragon
-
02009-07-22 17:09:28@
树状数组和线段树 都 用过了
速度还是线段树快
理论讲 应该差不多
但不知道为什么 -
02009-07-16 21:46:26@
线段树……
沙茶题留名…… -
02009-06-19 16:32:05@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 9ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:9ms
括号序列真牛逼。。。我无聊写的线段树,可惜了那个9ms。。。
写线段树是因为,刚开始理解错题意,以为是区间加法和区间最大值。。。我沙茶~ -
02009-06-17 08:16:49@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms括号匹配+两个树状数组……
我shax了,树状数组更新区间括号数时将
-
02009-06-10 19:10:28@
神奇的括号法。
贴个垃圾的线段树
program vijos1448;const
maxn=50002;
type
node= record
ls,rs,a,b,zkh,ykh:longint;
end;
var
p:array[1..maxn*2] of node;
all,ansz,ansy:longint;
procedure creat(c,d:longint);
var
now,mid:Longint;
begin
inc(all);
now:=all;
p[now].a:=c; p[now].b:=d;
if c -
02009-06-02 13:46:31@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案错误...程序输出比正确答案长
├ 测试数据 03:答案错误...程序输出比正确答案长
├ 测试数据 04:答案错误...程序输出比正确答案长
├ 测试数据 05:答案错误...程序输出比正确答案长
├ 测试数据 06:答案错误...程序输出比正确答案长
├ 测试数据 07:答案错误...程序输出比正确答案长
├ 测试数据 08:答案错误...程序输出比正确答案长
├ 测试数据 09:答案错误...程序输出比正确答案长
├ 测试数据 10:答案错误...程序输出比正确答案长
什么原因????
寻求大牛帮助 -
02009-04-04 20:40:12@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-03-31 16:52:19@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms括号法,线段树实现
-
02009-03-31 13:46:32@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:运行时错误...| 错误号: 202 | 堆栈溢出错
├ 测试数据 03:运行时错误...| 错误号: 216 | 存取非法
├ 测试数据 04:运行时错误...| 错误号: 216 | 存取非法
├ 测试数据 05:运行时错误...| 错误号: 216 | 存取非法
├ 测试数据 06:运行时错误...| 错误号: 216 | 存取非法
├ 测试数据 07:运行时错误...| 错误号: 216 | 存取非法
├ 测试数据 08:运行时错误...| 错误号: 216 | 存取非法
├ 测试数据 09:运行时错误...| 错误号: 216 | 存取非法
├ 测试数据 10:运行时错误...| 错误号: 216 | 存取非法
????????????????????
type arr=array[1..2000000]of longint;
var a,b:arr;
k,i,n,m,l,r,x,len,o,p
:longint;
function max(a,b:longint):longint;
begin
if a>b then max:=a
else max:=b;
end;
procedure jian(p,x,y,xx:longint;var a:arr);
var mid:longint;
begin
inc(a[p]);
if x=y then exit;
mid:=(x+y)shr 1;
if xx>mid then jian(p shl 1+1,mid+1,n,xx,a)
else jian(p shl 1,x,mid,xx,a);
end;
function count(p,x,y,x1,y1:longint;var a:arr):longint;
var mid:longint;
begin
if (x1 -
02009-03-27 15:46:58@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-03-19 22:51:45@
要开两个树状数组,思想前面的大牛已经说了。
for i:=1 to m do
begin
readln(j,a1,b1);
if j=1 then begin add(1,a1,1); add(2,b1,-1); end
else writeln(query(1,b1)+query(2,a1-1));
end; -
02009-03-19 20:39:06@
线段树写习惯了……
-
02009-03-16 12:53:25@
注意到Lowbit数组应当为longint格式,否则可能变成 -maxint (-32768)……
-
02009-03-09 13:47:11@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms神奇的"括号法"!!!!!!!!!
-
02009-03-02 12:38:47@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
树状数组 -
02009-02-27 22:25:43@
显然是树状数组,这种题目做多了,不做了
-
02009-03-17 15:54:55@
引用吴豪大牛:
这题看起来和树状数组没什么关系,不过我们通过一定
的转化,可以利用树状数组很好地解决这个问题。
我们不妨把所有线段的端点看成括号序列,即把询问的
区间[lq,rq]看成在横坐标lq处的一个‘[’和rq处的‘]’, 即把插
入的线段[li,ri]看成在横坐标li处的一个‘(’和ri处的‘)’。
稍作分析,我们不难发现,最后的答案等于‘]’左边‘(’
的个数减去‘[’左边‘)’的个数。
那么我们现在做的就是对某个点做修改,对某个前缀求
和。我们就可以很容易想到树状数组的做法:
1.建立两个树状数T1和T2,分别维护‘(’和‘)’。
2.若K=1,读入li,ri,plusT1(li,1),plusT2(ri,1)。
3.若K=2,读入lq,rq,sumT1(rq-1)-sumT2(lq-1) -
02009-02-21 18:39:03@
万恶的评测机!为什么用write过,writeln不过?
害我白交了4次!!!!! -
02009-02-11 14:57:41@
用的是个极度委琐的线段树,看下面大牛的方法果然神奇
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 41ms
├ 测试数据 10:答案正确... 9ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:50ms