149 条题解

  • 0
    @ 2006-10-17 08:22:45

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    第一次提交的时候忘了改数据范围,a:array[1..3]of 0..1.......

    结果得了10分还有n个错误206、n个错误216、n个错误103。。。。

  • 0
    @ 2006-09-22 18:56:51

    广搜;

    二进制判重,但不是根据选了哪些药,因为两种药先选和后选的药效是不一样的,

    所以不能根据药判重.那么只能根据药效判重了.

  • 0
    @ 2006-08-25 20:47:13

    规模很小,直接搜

    费了我n%的AC率呀!

  • 0
    @ 2006-08-24 20:18:02

    广搜是很艺术的...

  • 0
    @ 2006-07-15 17:06:16

    和p1019:《补丁VS错误》一样,用二进制表示状态(节点),用药代表边,建图(不必保存边,每次用每次算)。再Dijstra一遍就行了。

    透露一下,我做p1019时的Dijstra在堆优化的时候有错误,居然还过了。这次过不了,才检查出来的。

  • 0
    @ 2006-07-08 15:52:32

    用广搜加一个2^10的hash

  • 0
    @ 2006-07-07 00:45:16

    此题初看上去酷似深搜,但是不难发现,如果采用针对每种药是否使用而深搜,那么势必造成2^100的时间复杂度,这是不可能实现的。不妨从题目另一个变化的方面着手——患病的状态总共只有2^10种,那么这样的时间复杂度用搜索是可以承受的。但是现在面临的问题是用深搜还是广搜呢?不难发现,部分患病状态之间是可以通过吃药来转化的,也就是说,这些患病的状态之间有权值为1的边。那么,这道题可以转化为图的最短路径问题:每种患病状态作为一个节点,用某种药为边(因为题中只要求计算总数,所以这里不用在边上面区分是哪种药),在这样的图中用广搜计算从2^n点到0点的最短路径,路径上的边数就是用药数。需要明确的一点是,因为“已经患的病,致病药品不起作用,而已经康复的病,治疗药物也不起作用”,所以每种药品只有用与不用两种状态,于是广搜的时候不会出现重复用药导致最先得到的不是最优解的情况,也就是说,不必记录到达某个点所用的药品种类,只需要记录所用的药品总数。最后,注意程序编写中的进制转换操作,当心出错!

  • 0
    @ 2006-06-18 16:37:14

    和《补丁vs错误》一样,宽搜,用hash判重。

    但是有一个地方简单一些:

    搜到一个解就可以直接输出,因为肯定是最优解。

    这题很难吗?@_@

  • -1
    @ 2006-04-04 17:22:01

    总体很难,局部亦然。

信息

ID
1026
难度
6
分类
搜索 | 搜索与剪枝 点击显示
标签
(无)
递交数
3640
已通过
1102
通过率
30%
被复制
19
上传者