43 条题解
-
1
electrodynamix LV 9 @ 7 年前
-
116 年前@
由于做题是有序的,所以就有了阶段,我们用f[k,i]表示前k天完成前i道题的最小欠费,方程为f[k,i]:=min{sum_b[j+1,i]|sum_a[j+1,i]+f[k-1,j]
-
07 年前@
-
015 年前@
Flag Accepted
题号 P1322
类型(?) 动态规划
通过 357人
提交 1286次
通过率 28%
难度 2不用 动态规划 用宽搜+hash
好program ss;
var
b:array [1..1000,1..2] of longint;
a:array [1..1000000,1..3] of longint;
c:array [1..1000,1..1000] of longint;
m,p,i,j,q,w,e,r:longint;
begin
readln(m,p);
for i:=1 to p do
readln(b,b);
a[1,1]:=1;
a[1,2]:=0;
a[1,3]:=0;
i:=1;
j:=1;c[0,0]:=1;
while a=0) and (w>=0) do
begin
if c[e,w]=0 then begin
inc(j);c[e,w]:=1;
a[j,3]:=w;
a[j,2]:=e;
a[j,1]:=a+1;
if e=p then begin writeln(a[j,1]);halt;end;
end;
inc(e);dec(q,b[e,1]);dec(w,b[e,2]);
end;
inc(i);
end; r:=i;
writeln(a[r,1]);
end. -
015 年前@
Accepted 有效得分:100 有效耗时:0ms
悲剧了,交上去莫名其妙编译不通过....
第一个月没钱,所以一定要工作,最后要加1..... -
015 年前@
orz
我是从后往前dp的额,,,,总感觉从前往后dp,,,还影响后面的,,哎,,太弱了想不通。。。。。。。 -
015 年前@
注意题目!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
015 年前@
whyvine的解题报告:
http://blog.sina.com.cn/s/blog_618b6ea70100elgo.html -
015 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms不知道原因。。我用 集装箱问题 一样的方法 过了。。
感谢 cheesecow 的解释! -
015 年前@
我用P1306的方程略加补充。。。。过了。。。
-
015 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
过了,O(N2)似乎也可以过 -
015 年前@
为什么要加一呢,因为第一个月没有启动资金,什么也不能做
-
016 年前@
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms没考虑 到 边界问题 ,把 数组开 301 就 过了…… 不然 WA 8、9
貌似 我用 的 方法 和 大家 题解 不一样啊 :
首先 不是什么 高效 的 算法—— O(N^3)状态 描述:F表示 已开始第 i 个任务,已完成 第j 个任务 所 需要 的 最小 月数 ; 初始化 为 正无穷大, F[0,0]=0;
解: F[n,n]+1 至于为什么 要加一 ,我是没搞懂 …… 我测样例 就比 答案少 1 ……预处理 a表示第i到j任务启动资金和
b……………… 结束……
for i:=0 to n do
for j:=0 to n do f:=700;
f[0,0]:=0;
for i:=1 to n do
for j:=0 to i do
for k:=0 to j do
if b[k+1,j]+a[j+1,i]f[j,k]+1 then
f:=f[j,k]+1;
writeln(f[n,n]+1); -
016 年前@
Accepted 有效得分:100 有效耗时:0ms
这题为什么数组开大点就过去了呢…………#&¥*(%@%#@
-
016 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
016 年前@
ans=min+1
-
016 年前@
f表示做完前i题欠费j元的最小月数;
f=min{f[k,sum(t[k+1],t[i])]}+1 其中 sum(t[k+1],t[i]) -
016 年前@
在别人帮助下终于把这个题AC了
但还是郁闷的很··· -
016 年前@
果然猥琐....前一个程序看上去像DP...实质是贪心..心寒啊#15.后来自己搞了个测试数据..错掉- -!!F[L,X]表示第L个月,做了第X道题下个月要付的钱。发现反正这个F[L,X]一定要搜到头,找到最小值,不能在中间的时候找不到就退出搜索。如果在中间找不到就退出,那是贪心- -!!不是DP....完全不是一个档次~挖哈哈
-
016 年前@
ans=最小答案+2