讨论 / 数据和标程好像有问题?
Ai 2008-11-09 18:35:00
点我顶贴 收藏 删除
12

0 1 1

1 1 2

2 1 3

3 1 4

4 1 5

5 1 6

6 1 7

7 1 8

8 1 9

9 1 10

10 1 11

11 0

对于这个数据其实就是下面这一条链

0-1-2-3-4-5-6-7-8-9-10-11

那么显然

1监视0 1 2

4监视3 4 5

7监视6 7 8

10监视9 10 11

我的树形Dp程序得出4个

而OIBH上发布的标程答案却是6

大家帮忙看看

#1 xijisoft@2008-11-09 05:33:00
回复 删除
哦..我看看
#2 lizhixin@2008-11-09 05:52:00
回复 删除
我的也是

请问

21

0 5 1 2 3 4 5

4 1 7

5 1 6

7 1 9

6 1 8

9 1 10

10 1 11

11 1 12

12 1 13

13 1 14

14 1 15

15 1 16

16 1 17

17 1 18

18 1 19

19 1 20

标程得9,我觉得应该得7,您看对吗

#3 Ai@2008-11-09 06:04:00
回复 删除
我的树形Dp是这样表示的

f[i,1],表示在i有人监视的最小值

f[i,2],表示在i没有人监视,但i能被她的孩子监视的最小值

f[i,3]表示在i没有人监视,且i不能被她的孩子监视到的最小值,这时需要他的父亲去监视她.

f[i,1]=sigma(min(f[k,1],f[k,2],f[k,3]))+1;

f[i,3]=sigma(f[k,2])

更新f[i,2]的时候特别注意以下

f[i,2]=sigma(min(f[k,1],f[k,2]));

如果在这一步中所有的f[k,1]都小于f[k,2],则再枚举一个f[k,1]去替换f[k,2],再取最小值

我觉得我应该没错阿

结果就wa了

#4 xijisoft@2008-11-09 06:08:00
回复 删除
确实有问题
#5 Ai@2008-11-09 06:09:00
回复 删除
等以下 我刚刚说错了

应该是

如果在这一步中所有的f[k,1]都大于f[k,2],则再枚举一个f[k,1]去替换f[k,2],再取最小值

#6 Ai@2008-11-09 06:10:00
回复 删除
写程序还只写了20min,找错搞了2h
#7 Zx.MYS@2008-11-09 06:20:00
回复 删除
反正这题我WA……>.<
#8 linshutan@2008-11-09 18:35:00
回复 删除
http://www.oibh.org/bbs/thread-26514-1-1.html
查看更多回复
提交回复