95 条题解

  • 0
    @ 2009-09-02 22:09:59

    这题真是卡时间又卡空间....

    时间上因为

    F[N]=F[N div 2]+F[N div 2 -1]+...+F[1]

    当你很兴奋地想要开3000000的数组,和N^2的算法。那你还是去睡觉吧。

    我们必须找到一些优化。

    当N=2*i+1时,F[N]=F[N-1].

    当N=2*i时,F[N]=F[N-1]+F[N div 2].

    这样就达到O(n)的时间。

    而且当N=2*i+1时,F[N]=F[N-1]. 也就是数组里一半的数是相同的,所以我们只要开1500000的数组就可以了,不然MLE等着你。

    最好加上压位高精,不加能不能过我也没试。

    另外不要兴奋过度,因为有多组数据,否则就是“格式错误”等你啦。

    其实几组数据都无所谓,我们一不做二不休全部算出来,然后读表就可以了。

    核心代码就这么短,再写个高精加法就AC了!

    f[0][0]:=1; f[0][1]:=1;

    for i:=1 to maxn do add(f,f[i shr 1],f[i]);

  • 0
    @ 2009-08-27 23:43:15

    编译通过...

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

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

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

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

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

    啊,AC 啦!

    天啊,地啊~~~~~~~~

    总结一下(楼下大牛们的题解):

    1. 高精不用说了,压9位,数组开1500000*7

    2. 因为2*k与2*k+1的值相同(自己先算出前几个的值,就可以找到规律)

    f[0]:=1;

    f[i]:=f+f[i shr 1];

    这里的i代表偶数,输出时只要输出n shr 1,推的时候只推偶数值,具体看程序

    程序:

    const maxn=1500001;

    th=1000000000;

    type arr=array[0..7] of longint;

    var

    f:array[0..maxn] of arr;

    n,i,max:longint;

    procedure add(var s:arr;a,b:arr); //高精加

    var i,sum,t:longint;

    begin

    i:=1;

    t:=0;

    while (i

  • 0
    @ 2009-08-25 20:14:47
  • 0
    @ 2009-08-21 21:28:13

    为什么不压9位呢? 那样不就15000000*6了吗?

  • 0
    @ 2009-08-20 16:37:34

    编译通过...

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

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

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

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

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

    第300个通过`\`

  • 0
    @ 2009-08-20 14:02:45

    庆祝一下!AC第100题!

    编译通过...

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

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

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

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

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

  • 0
    @ 2009-08-16 19:02:26

    我X...

    压8位...存一半...不然内存溢出...

    难怪通过率那么低...

    f[i]=f+f[i div 2]

  • 0
    @ 2009-08-15 23:15:03

    编译通过...

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

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

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

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

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

    没什么好说的,感谢先人的指点!

    终于领略了此题的精髓...

    可是还是刷了好多次...

    嗯...那个,下次咱也信春哥...

  • 0
    @ 2009-08-11 20:24:25

    编译通过...

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

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

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

    由于种种原因,本人叫了十次,前面的都是10分,悲剧啊。

    在最后一次的时候,我在最后“end.”前加了“{信春哥,刷水题}”结果就ac了。现在我才知道春哥是多么的..膜拜

  • 0
    @ 2009-08-11 19:40:57

    编译通过...

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

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

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

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

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

    交了八次,最后一次终于过了,唉。。。。。。

  • 0
    @ 2009-08-10 16:00:39

    终于过了…………这时候才发现我头发都白了。。。

    。。N组数据~前面算过就不用算了。。。居然才想到。。Vag 6K~好东西阿~

  • 0
    @ 2009-08-07 15:00:31

    Orz

    此题害人不浅啊!

    注意:

    1.每个点有多组测试数据

    2.空间有限制

  • 0
    @ 2009-08-06 12:43:41

    编译通过...

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

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

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

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

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

    第一次 开了个3000000*50的数组交上去 运行超时

    然后再次提交 还是不行....

    第二次 想了想 其实我还是做麻烦了f[i]:=1+f[i div 2]+f[i div 2-1]+..f[1]

    其实可以改成f[i]:=f

    if i是偶数 then f[i]:=f[i]+f[i div 2]

    提交 还是错了...

    第三次

    后来看了看楼下们的题解

    因为第2*i个与2*i+1个是相等的 数组可以压缩一半

    又发现要高精压9位(偶滴神啊!!!!)

    就这样把数组压到 1500000*7

    总算过了 呼呼(~ o ~)~zZ

  • 0
    @ 2009-08-03 21:40:55

    此题看来不能交打表程序,一个裸的case要83.4MB。

    预处理然后直接输出吧。

  • 0
    @ 2009-07-30 18:57:17

    编译通过...

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

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

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

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

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

    ⊙﹏⊙b汗

    真不容易~

    由于2i和2i+1答案一样 所以只记录1500000个

    防止内存溢出

  • 0
    @ 2009-07-25 08:52:44

    编译通过...

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

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

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

    这是dragon...

    编译通过...

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

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

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

    这是puppy....

    靠...活活被急死...

  • 0
    @ 2009-07-23 16:04:12

    一定要在读入之前把表都打出来,那样可以省略每次计算当中重复的部分,不会超时。

  • 0
    @ 2009-05-29 11:24:37

    编译通过...

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

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

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

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

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

    orz..第一次完全没看见“包含多个数据”这几个字……

    果然加强的就是不一样……

  • 0
    @ 2009-05-06 20:46:47

    Type

    arraytype=array[1..20] of longint;

    就过1个点

    改成

    Type

    arraytype=array[1..8] of longint;

    就AC了

    编译通过...

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

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

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

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

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

  • 0
    @ 2009-04-05 10:31:13

    编译通过...

    ├ 测试数据 01:运行超时|格式错误...

    ├ 测试数据 02:运行时错误...| 错误号: 207 | 无效浮点运算

    ├ 测试数据 03:运行超时|格式错误...

    我无语..........

信息

ID
1136
难度
8
分类
递推 | 高精度 点击显示
标签
(无)
递交数
3322
已通过
500
通过率
15%
被复制
4
上传者