59 条题解
-
0foorso. LV 8 @ 2008-10-05 17:17:04
矩阵求解:
对于FB**数列用JZ有个很好的方法,快速幂。。下面我来介绍一下:
a b 0 1
[ ] [ ]=[(a b)(0 1) (a b)*(1 1)]a b 1 1
做一次的时间复杂度为O(4)。若做N次为o(4N)
这样一次JZ*法就可以做一次递推。。对于JZ乘没有交换率,但有结合率。
故有[a b]^(x+y)=[a b]^x * [a b]^y 对于满足结合率的算法我们有个经典的求解过程(不会的去看麦森树)快速幂。这样就可以保证在log 2 N的次完成任务
故时间复杂度为o(4*log 2 n)。。N介JZ在递推里有深刻的应用。若想深入了解查看好象是杨弋大牛的论文。。
-
02008-10-05 15:18:20@
二分? 线形!
-
02008-10-05 01:30:01@
感谢上苍啊.............
一个二分查找
打了一天
然后询问大牛
遭到强烈鄙视
哎.........
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 25ms
├ 测试数据 08:答案正确... 103ms
├ 测试数据 09:答案正确... 150ms
├ 测试数据 10:答案正确... 181ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:459ms基本就是快排+二分+高精度
-
02008-10-04 23:28:50@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 9ms
├ 测试数据 09:答案正确... 25ms
├ 测试数据 10:答案正确... 72ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:106ms太疯狂了!!我编了131行才完工……(先写了两个程序,再合并了一下,(*^__^*) 嘻嘻……)
第一次提交90,后来把万进制改成十万进制,就AC了!
-
02008-10-04 10:05:29@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms快排+线性遍历+高精
-
02008-10-03 22:43:22@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 25ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:25ms诡异的评测机,考试时0msAC,早上交了三次,一次80,2次90,全是超时,通过率降啊!
个人意见,快排+高精,矩阵不会用。不过鄙人压了十万位的高精度。。
觉得二分没快排+线性遍历来得方便 -
02008-10-03 22:25:51@
评测器不稳定,白白浪费了我的通过率
-
02008-10-03 22:13:20@
---| 第1题 ---|---|---|---|---|---|---|---|---|---|---|--
编译通过...
测试数据01:答案正确... 0ms
测试数据02:答案正确... 0ms
测试数据03:答案正确... 0ms
测试数据04:答案正确... 0ms
测试数据05:答案正确... 0ms
测试数据06:答案正确... 41ms
测试数据07:运行时错误...| 错误号: 128 |
测试数据08:运行时错误...| 错误号: 128 |
测试数据09:运行超时...
测试数据10:运行时错误...| 错误号: 128 |
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:60 有效耗时:41ms谁知道错误号128是什么意思
-
02008-10-04 12:16:23@
二分+高精
我高精用qword 15位1存...编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 72ms
├ 测试数据 09:答案正确... 56ms
├ 测试数据 10:答案正确... 119ms -
02008-10-03 20:04:12@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 41ms
├ 测试数据 07:答案正确... 41ms
├ 测试数据 08:答案正确... 119ms
├ 测试数据 09:答案正确... 150ms
├ 测试数据 10:答案正确... 212ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:563ms -
02008-10-03 19:24:46@
先QSORT排好所有车子的名字,如果你怕二分出错,就用个数组记下以['A..'z']开头的车名的第一个位置,以后每次只要从这个位置开始搜就可以了,当搜完了以这个字母开头的车名就可以退出了,因为再搜下去也没意义.
至于第二步,如果看不出请用搜索模拟一下,如果你看到一串数字1,1,2,3,5,8,13..还无动于衷,那你干脆就别学了.就是这样,菲薄那切数列,不过这数列的第10000个数着实大的令人恐怖!想AC就写高精吧,又不是没写过.裸高精要超时,可以用万进制.还有一点小小的建议,做高精时最好不用MOD 求余运算在PASCAL里实在太慢了,数据大了就看的出..^_^
-
02008-10-03 19:14:32@
别考虑太多了,韵韵想多次玩同一个车就让她去玩。
-
02008-10-03 19:12:37@
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 9ms
├ 测试数据 08:答案正确... 181ms
├ 测试数据 09:答案正确... 228ms
├ 测试数据 10:答案正确... 338ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:756ms晕,考试时死活没有想到要二分一下。。。。
-
02008-10-03 16:22:25@
命苦啊
考试时居然没想到用高精.....
二分+高精度=AC -
02008-10-03 15:54:34@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 9ms
├ 测试数据 10:答案正确... 41ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:50ms一次的,呵呵!
-
02008-10-03 15:42:30@
暴力就能ac?考试时咋就t了呢?
Accepted 有效得分:100 有效耗时:1698ms
谁的程序比我慢??? -
02008-10-03 15:18:20@
囧Orz
为了调试忘记把去掉的"m"补进去了 -
02008-10-03 14:23:16@
也是同样的程序,一次90一次ac(还是全部0ms的)呵呵~~
用一个数组p:array['A'..'z'] of longint;p[c]表示以c开头的最小字符串的起始位子然后从p[c]开始往下找,一直到找到符合的或者比当前的字符串大的~~
-
02008-10-03 14:16:46@
同样的程序,同样的评测机,不一样的结果.
WA1...WA2...WA3...AC....
???
-
02008-10-03 14:14:26@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 9ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:9ms
同样的 评测机,同样的代码,两次90,第三次AC!