118 条题解
-
0香蕉派 LV 9 @ 2009-11-03 10:21:05
....我想不出来诶。为什么有一样的单词会有影响啊,预处理的时候不是就算有两个单词一样也可以无视掉吗。?
-
02009-10-30 22:04:34@
AC 了,起码提交 6 次了,贡献了很多分母啊!
细节很重要,不要以为没有影响,其实影响大得很! -
02009-10-28 22:34:17@
好丑的时间......细节题,细节题!
刚才发现有个叫gcc的不停的在交p1000
害我等了半天才看到结果....
---|---|---|---|---|---|---|---|---|---|-
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 181ms
├ 测试数据 04:答案正确... 369ms
├ 测试数据 05:答案正确... 509ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1059ms -
02009-10-28 21:45:53@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
第3点我为什么得158??? -
02009-10-28 19:12:17@
水题……水过
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-10-22 23:00:52@
这题的边界条件真的很烦人
无效的状态最好附一个很小的数(负数)
如果只分成一部分, 就取那部分包含所有的单词数(一定要专门处理)。 -
02009-10-21 07:41:22@
某神牛说此题数据只要预处理就可拿60分?
第三个点Cheat了。。。
问下第三个点输出195的原因?我已经把重复的单词去掉了啊(这样第四个点过了) -
02009-10-14 20:38:01@
Orz..第三个点输出195的朋友们注意啦...
第二次DP的k循环那里啊...不要把无效的转移进来..
-
02009-10-12 20:35:06@
有这种错的人吗?
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案错误...
├ 标准行输出 125
├ 错误行输出 158├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:80 有效耗时:0ms -
02009-10-11 23:19:44@
我靠,好歹是参加过NOI的人了……平时菜DP无数,这次竟然败在无效状态上,靠~
-
02009-11-08 16:38:05@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-10-07 11:06:08@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-10-07 10:54:49@
var
i,j,p,k,max,t,n,q:longint;
s,st,l:string;
a:array[0..2000] of longint;
list:array[0..500] of string;
g,f:array[0..1000,0..1000] of longint;
begin
assign(input,'wordnum.in');reset(input);
assign(output,'wordnum.out');rewrite(output);
readln(p,k);
for i:=1 to p do
begin
readln(st);
s:=s+st;
end;
n:=20*p;
readln(t);
for i:=1 to t do
readln(list[i]);
for i:=1 to t-1 do
for j:=2 to t do
if length(list[i])>length(list[j]) then
begin
l:=list[j];
list[j]:=list[i];
list[i]:=l;
end;
for i:=1 to n do
begin
a[i]:=n+1;
for j:=1 to t do
if copy(s,i,length(list[j]))=list[j] then
begin
a[i]:=i+length(list[j])-1;
break;
end;
end;
fillchar(g,sizeof(g),0);
for i:=1 to n do
for j:=i to n do
for q:=i to j do
if a[q] -
02009-10-05 19:35:39@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 41ms
├ 测试数据 05:答案正确... 72ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:113ms
虽然没有秒杀,但是一次ac,还是很高兴 -
02009-10-04 18:01:12@
program mm;
var
a,f:array[0..200,0..200] of longint;
i,j,k,l,m,n,o,p:longint;
s,s1:string;
b:array[0..100] of string;
begin
fillchar(f,sizeof(f),0);
readln(l,k);
for i:=1 to l do begin
readln(s1);
s:=s+s1;
end;
readln(m);
for i:=1 to m do
readln(b[i]);
n:=length(s);
for i:=1 to n do
for j:=i to n do
for l:=i to j do begin
for o:=1 to m do
if (b[o][1]=s[l]) and (length(b[o])f then f:=f[p,j-1]+a[p+1,i];
writeln(f[n,k]); }
end. -
02009-09-23 21:58:47@
第3个点196或192的人注意一下
如果你是192,注意第2次DP:for k:=j-1 to i-1 do f:=max(f,f[k,j-1]+g[k+1,i]);
如果你是196,注意输入的k不要当循环变量名使用{竟然这么危险的错误才错1个点} -
02009-09-22 15:14:11@
for i:=1 to length(s) do
for j:=1 to min(i,k) do
begin
for h:=j-1 to i-1 do
f:=max(f,f[h,j-1]+g[h+1,i]);
end;
f表示将前i个字符分为j个部分的包含的最大单词个数
g表示在i到j包含的最大单词个数
注意h是从j-1开始循环,就因为这个wa了一次 -
02009-09-22 13:15:32@
简单的双DP
-
02009-09-19 12:22:54@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms让人无语,我用搜索做了3遍都超时,死磕动规又不是我的强项,好无语啊
-
02009-09-18 17:26:19@