74 条题解
-
0honghaijie LV 9 @ 2009-10-27 10:13:43
8次才过..
原来f[1,2]不能等于1
..
我果然是个沙茶..
-
02009-10-26 20:38:41@
大家千万不要乱用原子弹!!
咱有小刺刀就用小刺刀。
完了应该是求极大值以及极小值吧 -
02009-10-23 21:55:07@
为啥大家都用这么高深算法...>.<
O(n)找极大值即可.(注意是"极大值"~~) -
02009-10-22 08:45:18@
终于用线段树过掉了。
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-10-11 22:09:18@
var
top0,top1,now,last,i,n,k:longint;
p1,p0:array[0..5000]of longint;
begin
readln(n);
p0[0]:=-maxlongint;
for i:=1 to n do
begin
read(now);
for k:=top1 downto 1 do
if nowtop0 then begin inc(top0); p0[top0]:=now; end
else if p0[k]>now then p0[k]:=now;
break;
end;
for k:=top0 downto 0 do
if now>p0[k] then
begin
if k+1>top1 then begin inc(top1); p1[top1]:=now; end
else if p1[k+1] -
02009-10-09 22:56:23@
DP+离散+线段树 O(nlogn)的效果
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms第一次写线段树把更新区间搞错了,DEBUG三四天了这题,终于过了。
方程
f=max{ f[j,2] | a[j]a[i] } +1显然每次要查询1~a[i]-1的f[x,2]的最大值和 a[i]+1~m的f[x,1]的最大值。
这不就是区间最大值问题么?那当然是线段树啦。
从样例就知道编号是跟n没关系的(可能会很大),所以离散化成m个点,其中m是不同编号的个数,这样就把编号映射到1~m的m个数。
100行的程序,好猥琐啊。这题很好啊,就是数据……N^2都行……。
-
02009-09-12 23:38:47@
Orz教主
-
02009-09-12 17:21:13@
Orz教主
-
02009-09-12 17:20:41@
Orz教主
-
02009-09-12 17:11:38@
f[i][j]
若j=0:表示后i个导弹中,选出来的第二个导弹第一个导弹..在满足这个条件下的最大导弹数
若j=1:表示后i个导弹中,选出来的第二个导弹>第一个导弹(即第i个导弹),第三个导弹 -
02009-09-08 21:36:58@
看懂题意=1A
-
02009-08-29 19:11:26@
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms我也是n2列。。。。。。。今天有点小rp。。。。。。。
-
02009-08-23 16:21:43@
Accepted 有效得分:100 有效耗时:1118ms
记得F数组清1 -
02009-08-23 12:03:02@
编译通过...
├ 测试数据 01:答案正确... 306ms
├ 测试数据 02:答案正确... 197ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 88ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 41ms
├ 测试数据 09:答案正确... 244ms
├ 测试数据 10:答案正确... 181ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1057ms
n^2
蛮水 -
02009-08-22 15:16:28@
编译通过...
├ 测试数据 01:答案正确... 338ms
├ 测试数据 02:答案正确... 197ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 103ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 56ms
├ 测试数据 09:答案正确... 259ms
├ 测试数据 10:答案正确... 197ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1150ms头痛啊!
-
02009-08-17 12:43:40@
int main()
{
int n,i,j,ans=1;
cin>>n;
for(i=1;i>a[i];
for(i=1;ians)ans=f1[i];
if(f0[i]>ans)ans=f0[i];
}
cout -
02009-08-11 13:13:09@
var
n,i,j,k,ans:longint;
f,g,a:array[-1..12000] of longint;
begin
readln(n);
for i:=1 to n do
read(a[i]);
readln;
for i:=1 to n do
for j:=0 to i-1 do
begin
if (j=0) or ((a[i]>a[j]) and (g[i] -
02009-08-10 18:24:07@
老大啊~ 那个导弹编号多大啊?
我用不用先离散化~
这是个问题~!
怎么好像maa04出题都是,凡是不是他标程的方法有关的,都不提供数据范围?还真是平方可以秒啊~
Accepted 有效得分:100 有效耗时:469ms
这么下去太堕落了~ -
02009-08-09 13:01:26@
Accepted 有效得分:100 有效耗时:1336ms
Puppy这么险?
变形的导弹拦截式DP
-
02009-08-06 12:21:44@
不一定要开两个数组,我就用了一个
var max,i,k,j,n:longint;a:array[0..10001]of longint;
f:array[0..10000]of longint;
beginreadln(n);
for i:=1 to n do read(a[i]);for i:=1 to n do
begin
f[i]:=1;
end;
max:=0;
for i:=1 to n do
for j:=0 to i-1 do
begin
if (j=0)or((f[j] mod 2=0)and(a[j]f[i])) then
begin
f[i]:=f[j]+1;
end;
if (j=0)or((f[j] mod 20)and(a[j]>a[i])and(f[j]+1>f[i])) then
begin
f[i]:=f[j]+1;
end;
if f[i]>max then max:=f[i];
end;
writeln(max);
end.