69 条题解
-
0zhh1993 LV 10 @ 2009-08-15 10:19:17
郁闷.....一定要细心.....
-
02009-08-13 22:30:14@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms顺推顺推啊!!!!
就是发四维的F数组,然后枚举当前可以的状态推到后一个状态!!!! -
02009-08-11 23:05:32@
bfs即可秒杀,
用f表示已有i个成品装箱、手中有j个“A”、k个“B”这个状态是否达到来判重。 -
02009-08-06 09:55:13@
Accepted 有效得分:100 有效耗时:0ms
嘢 一次秒杀
用的是四维数组
f表示取下第i件物品时 手中A种有k1件 ,B种有k2件 ,C种有k3件
f与f这个状态有关当i件物品是A时 那么k1+1,是B时 那么k2+1 ...
然后放的次数可以从f得到注意一下 如果k1+k2+k3=10 了之后
要将其中一种物品取出 即k变成0例如 f取第i件物品时 i为A
那么 就可以得到f如果此时k1+1+k2+k3=10了 即满足条件了
那么就可以得到f f f就这样一直统计到第n件物品
最后在所有f[n,k1,k2,k3]中找到最小值 -
02009-08-01 10:42:51@
37行向后递推,秒杀~
-
02009-08-07 11:46:01@
沙茶题留名……
秘密提铀就是为了放在超市买的吗?
如对本题有疑问可以参看我的题解:http://xujieqi.blog.hexun.com/35722312_d.html -
02009-06-03 21:35:48@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms呼,一次秒杀了。
一个小小的动规题竟然花费了我100多行。
情况复杂了,f[k,a,b,c]表示到第k个商品,A、B、C各a、b、c个时的最小花费,注意不够10个和初始的情况。
-
02009-04-03 22:14:40@
不用费时间了
直接广搜吧
BFS....... -
02009-04-01 03:39:56@
随便写了一个记忆化搜索,正等着wa那,结果0msAC了。。。
var
f:array[0..10,0..10,1..301]of integer;
a:array[1..310]of integer;
i,t1,t2,n:integer;ch:char;
function min(a,b:integer):integer;
begin
if a=n then exit(ord(x>0)+ord(y>0)+ord(z>0));
if f[x,y,k]0 then exit(f[x,y,k]);
f[x,y,k]:=10000;
t:=10-x-y;t1:=0;t2:=0;
for i:=k+1 to k+10 do
begin
if a[i]=1 then inc(t1) else if a[i]=2 then inc(t2);
if i-k=x then f[x,y,k]:=min(f[x,y,k],dfs(0+t1,y+t2,t+x-t1-t2,i)+1);
if i-k=y then f[x,y,k]:=min(f[x,y,k],dfs(x+t1,0+t2,t+y-t1-t2,i)+1);
if i-k=t then f[x,y,k]:=min(f[x,y,k],dfs(x+t1,y+t2,t-t1-t2,i)+1);
end;
exit(f[x,y,k]);
end;
begin
readln(n);
for i:=1 to n do begin
readln(ch);
a[i]:=ord(ch)-ord('A')+1;
end;
fillchar(f,sizeof(f),0);
t1:=0;t2:=0;
for i:=1 to min(n,10) do
if a[i]=1 then inc(t1) else if a[i]=2 then inc(t2);
writeln(dfs(t1,t2,min(10,n)-t1-t2,min(n,10)))
end. -
02009-02-03 02:28:21@
此题考的还是细心……
关键是边界比较麻烦……
就是n -
02008-11-12 19:39:30@
以前写程序很长,这程序很胖
-
02008-11-11 15:06:27@
70分T,T
├ 测试数据 01:运行超时...
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:运行超时...
├ 测试数据 10:运行超时...
我也记忆化搜索啊 -
02008-11-06 16:53:05@
简单的记忆化搜索
注意存储sa[x],sb[x],sc[x]分别代表到x的a,b,c的个数和,方便计算。
还有就是注意边界的问题。
N很小,要相信这是很难超时的!
-
02008-10-22 13:55:47@
很简单的dp
但要注意n -
02008-10-20 21:59:38@
预处理:
x[i],y[i],z[i]为前i个中,A,B,C分别的总个数
然后记忆化搜索
就好了 -
02008-10-13 13:59:07@
f表示进行到第I个物品,现在手里有J个A,K个B,Q个C时所能花的最小次数,从前面展开状态
-
02008-09-23 14:32:00@
= =|
郁闷的随机算法 -
02008-09-19 20:57:23@
编译通过...
├ 测试数据 01:运行超时...
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:运行超时...
├ 测试数据 10:运行超时...
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:70 有效耗时:0ms
搜索也不过如此........ -
02008-09-06 21:49:21@
这道题适合逆推,因为一个决策对应一个唯一的后继
-
02008-08-21 17:47:46@
千万要看题啊!第三组数据n小于10!!!!
一看到这题直接就以为。。。。。AC率啊