105 条题解
-
0panzer_wy LV 10 @ 2009-03-28 19:30:11
Accepted 有效得分:100 有效耗时:2711ms
好麻烦的题目,输出真是……@*……@#&*……
一开始不知道a大于b时要交换a,b,看了题解才晓得,这是什么题目啊~~~~ -
02009-03-18 17:35:34@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 119ms
├ 测试数据 06:答案正确... 306ms
├ 测试数据 07:答案正确... 384ms
├ 测试数据 08:答案正确... 369ms
├ 测试数据 09:答案正确... 384ms
├ 测试数据 10:答案正确... 322ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1884ms -
02009-03-17 16:41:45@
最后还要换行..
AC经典题了 -
02009-03-09 17:16:15@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 166ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 478ms
├ 测试数据 08:答案正确... 541ms
├ 测试数据 09:答案正确... 509ms
├ 测试数据 10:答案正确... 541ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:2235ms
printf("%d",ans);
一定要这样!!!! -
02009-03-02 12:00:54@
变态的题!!
居然歧视C++!!
printf("%d ",ans);即可 -
02009-03-01 08:56:57@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 88ms
├ 测试数据 06:答案正确... 228ms
├ 测试数据 07:答案正确... 306ms
├ 测试数据 08:答案正确... 384ms
├ 测试数据 09:答案正确... 384ms
├ 测试数据 10:答案正确... 416ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1806ms
PUPPY 的力量!
DOLPHIN 滚! -
02009-02-26 20:31:18@
线段树的题啊……
注意打印个数,要用write(ans,' ');
数组要开到2000000(楼下人说的)
还有输入中a可能大于b,要判断并交换。
最后附上关键部分题解:
是一个动态求的区间连续一段数最大值的问题,很显然应该用——线段树。
对于每个区间节点,记录一下maxl,maxr,max,sum,分别表示该区间从左起所能达到的最大值,从右起所能达到的最大值,区间内连续数所能得到的最大值,区间数的总和。
于是,有递推式子:
a[t].maxl = max{ a[ a[t].left ].maxl , a[ a[t].left ].sum + a[ a[t].right ].maxl }
a[t].maxr = max{ a[ a[t].right ].maxr , a[ a[t].left ].maxr + a[ a[t].right ].sum }
a[t].max = max{ a[ a[t].left ].max , a[ a[t].right ].max , a[ a[t].left ].maxr + a[ a[t].right ].maxl }
a[t].sum = a[ a[t].left ].sum + a[ a[t].right ].sum -
02009-02-24 18:54:07@
换行超时
空格通过对 C/C++ 选手没有什么提示……
-
02009-02-23 01:26:12@
庆祝一下!
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 228ms
├ 测试数据 06:答案正确... 462ms
├ 测试数据 07:答案正确... 525ms
├ 测试数据 08:答案正确... 494ms
├ 测试数据 09:答案正确... 494ms
├ 测试数据 10:答案正确... 572ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:2775ms -
02009-02-09 16:49:04@
竟然是连续区间没看见。。。
-
02009-02-04 21:31:06@
区间能A>B
竟然每个点都有啊。。。。
害我检查半天 -
02009-02-01 00:32:41@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案?.. 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 119ms
├ 测试数据 06:运行时错误...| 错误号: 202 | 堆栈溢出错
├ 测试数据 07:运行时错误...| 错误号: 202 | 堆栈溢出错
├ 测试数据 08:运行时错误...| 错误号: 202 | 堆栈溢出错
├ 测试数据 09:运行时错误...| 错误号: 202 | 堆栈溢出错
├ 测试数据 10:运行时错误...| 错误号: 216 | 存取非法
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:50 有效耗时:119ms
把write(ans[i])改成write(ans[i],' '),把范围改成2000000后,就过了,Vijos太过分了。
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 56ms
├ 测试数据 06:答案正确... 306ms
├ 测试数据 07:答案正确... 400ms
├ 测试数据 08:答案正确... 322ms
├ 测试数据 09:答案正确... 244ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1328ms
似乎我的时间还是比较短的呵呵。 -
02009-01-26 14:12:15@
哈哈哈!!!AC了!!!
输出太搞了,一个回车没加就3个点输出格式错误。 -
02008-12-27 20:21:50@
上帝保佑
-
02008-12-16 16:03:55@
感谢faintzw...助 我一臂之力.........................AC
-
02008-12-07 16:21:43@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 41ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 291ms
├ 测试数据 06:答案正确... 525ms
├ 测试数据 07:答案正确... 572ms
├ 测试数据 08:答案正确... 588ms
├ 测试数据 09:答案正确... 556ms
├ 测试数据 10:答案正确... 681ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:3254ms -
02008-11-26 19:30:31@
{Vijos 1083 优秀的线段树习题 这段代码是精华
procedure updata(var a:Seg;b,c:Seg);
begin
with a do
begin
sum:=b.sum+c.sum;
maxl:=maximum(b.maxl,b.sum+c.maxl);
maxr:=maximum(c.maxr,c.sum+b.maxr);
max:=maximum(b.max,c.max);
max:=maximum(max,b.maxr+c.maxl);
end;
end;
}const
nmax=500000;
infinity=maxlongint;
type
int=longint;
Seg=record
l,r:int;
sum:int;
maxl,maxr:int;
max:int;
left,right:int;
end;
var
S:array[1..nmax] of int;
T:array[0..2*nmax] of Seg;
root,total:int;
n,m,i:int;
k,a,b:int;
sign:boolean;
function maximum(a,b:int):int;
begin
if a>b then exit(a)
else exit(b);
end;procedure exchange(var a,b:int);
var c:int;
begin
c:=a;a:=b;b:=c;
end;procedure updata(var a:Seg;b,c:Seg);
begin
with a do
begin
sum:=b.sum+c.sum;
maxl:=maximum(b.maxl,b.sum+c.maxl);
maxr:=maximum(c.maxr,c.sum+b.maxr);
max:=maximum(b.max,c.max);
max:=maximum(max,b.maxr+c.maxl);
end;
end;procedure Build(a,b:int);
var now:int;
m:int;
begin
inc(total);now:=total;
with T[now] do
begin
l:=a;r:=b;
if a -
02008-11-07 22:50:42@
经过三天三夜的努力,经过无数次的提交与超时,我终于在2008年11月7日星期五 晚上21点31分28秒,AC掉了这一道题。
我现在不禁长叹一声:这道题目好欠扁!
下面是我的血泪史:
首先,我除了知道线段树之外,不知道任何关于这道题的事情,感谢Free_Show大牛的解题报告,我才得以悟到!
第一次的记录不幸丢失了。
其结果是:错误。
没办法,第一次编线段树,有错误是很正常的。经过我不懈的差错,和与Free_Show大牛程序的对比,终于找出了错误,并且修改了过来。
第二次的结果也丢失了,但是,现存结果中有一次和那一次一模一样的:
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:运行超时...
├ 测试数据 04:答案正确... 43ms
├ 测试数据 05:运行超时...
├ 测试数据 06:运行超时...
├ 测试数据 07:运行超时...
├ 测试数据 08:运行超时...
├ 测试数据 09:运行超时...
├ 测试数据 10:运行超时...
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:30 有效耗时:43ms
以为我的线段树写的太丑了,于是改改改。。。。。
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:运行超时...
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:运行超时...
├ 测试数据 06:运行超时...
├ 测试数据 07:运行超时...
├ 测试数据 08:运行超时...
├ 测试数据 09:运行超时...
├ 测试数据 10:运行超时...
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:30 有效耗时:0ms
这个很让人郁闷。。。。我维持这种状态大概有1、2天。。。。。
1个小时前。。。我突然想起了题解中所说的输出问题。。。。。一改。。。
原始编码:
for i:=1 to tt do writeln(b[i]);
更改后编码:
for i:=1 to tt do write(b[i],’ ‘);
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 134ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 712ms
├ 测试数据 08:答案正确... 838ms
├ 测试数据 09:运行超时|无输出...
├ 测试数据 10:运行超时...
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:80 有效耗时:1684ms
仍然很郁闷啊。。。。我狂郁闷。。。又怀疑是线段树编丑了。。。。于是又花了1个小时检查程序。。。未果,再上题解一看。。。。。
于是我的编码又变成了:
for i:=1 to tt do
if itt then write(b[i],' ')
else writeln(b[i]);
于是乎:
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 197ms
├ 测试数据 06:答案正确... 494ms
├ 测试数据 07:答案正确... 1056ms
├ 测试数据 08:答案正确... 759ms
├ 测试数据 09:答案正确... 853ms
├ 测试数据 10:答案正确... 1103ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:4462ms我好郁闷啊!!!!!!!!!!!!!!!!!如果哪位同学想做这道题,一定要注意输出啊!
-
02008-11-03 18:49:20@
靠……无奈了……花了一下午搞这题……输出整死人啊!!!
-
02008-11-01 15:16:42@
我晕...终于过了...
C++的效率...不说什么了
或者说我的线段树写丑了..