Time Limit Exceeded 结束 && Happy Valentine's Day~
昨天搞完了 Time Limit Exceeded, 现在还有一道题TESTGEN没有测试, 其余题目我们 YaohuaFree 的 Rank 是 41, 得分很诡异地竟然是 1234 分 (Rank List). 还算可以接受吧, 不过很可惜最后还是没有达成超过 lonelycorn 和搞掉 CLASS 这两个目标.
简单的说一下题目.
- Key to C (KEY)
这道题是我们第一道出的题目, 也是搞得最久的一道题目, 不过事实证明这道题根本拉不开分差 -- 最高的 154 分, 而我们 126 分就 20 多名了. 和其他的题目的 rank 1 动辄上千分比起来, 这道题做了基本相当于没做.
题目要求读入一些数, 判断它们的二进制表示是否回文. 评分标准和很多东西有关, 比如程序中关键字的个数 (这个权重最大), 比如空格个数, 比如代码长度... 总之这些东西都是越多得分越低. 然后代码回文会得到 extra bonus, 貌似是 4 倍多分数吧.
基本的做法就是?:操作符加main递归, 貌似 rank 1 那个也就这么做的. - Play with Code (SHORTEN)
给出一个代码要求缩短. 这道题最终也不知道那个代码到底啥意思, 只看懂了一段求素数. 而且那个代码在我们几个人的机器上跑貌似都 RE 掉了... 评分规则是代码长度越长分数越少.
最终的做法是物理缩短... 也就是 define 一个 for 啊, 改一点变量名啊... 就这样子... - Produce the Code (INPUT)
给出一个输入文件和一个输出文件, 要求写一个程序, 对于这个输入文件能够输出给出的输出文件. 当然可以不理睬输入文件直接把输出文件打出来 (我的第一个 code 的确是这么干的), 不过这样代码长度会很长, 而这道题的评分规则也是代码长度越长分数越少...
这道题由三个人合力完成... 先是来帮忙的 xhy 同学看出了替换规则 (我就是一直卡在这里), 然后我折腾出了乱序的规则, 最后是木木同学的 coding... 虽然 rank 不高不过做得很爽. - #ED (CODEHASH)
给出一段代码, 给一个 hash 函数, 要求代码输出自身的 hash 值.
貌似有人用 whitespace 来搞, 不过还是比较 orz 那个 rank 1 的, 就一句代码... 很强大.
这题我们一点没动. - COMPILE ERROR (CLASS)
我最想做出来的题, 但可惜最后也没做出来.
要求写一个类 multiply, 里面包括一个函数 mult(int a, int b), 函数的功能是输出 a * b 的结果, a, b 都小于 10000. 变态就变态在不允许用空白字符...
见到了两种解决方法, 一种是官方的 (之所以说官方因为这道题提示了要用 typedef, 如果认为题目描述的那个 "typedefine a class" 不足以说明问题, 那么自己去翻 forum), 另一种很诡异, 用一个不可见字符替代了空白字符还编译通过了... 据说那个字符是 \f, 从来没见过... - PRINT D PENGUIN (PENGUIN)
给一个字符画, 是 Linux 那个企鹅. 要求输出这个东西.
基本就是考压缩, 我因为怕编译器没法处理所以只压缩成了可见字符, 但是事实证明编译器是可以处理不可见字符的, 因为 rank 前几名的都用了不可见字符. 我很无奈, 不过可见字符范围的压缩我基本是搞到极限了, 还比较有成就感. - PRINT ME (PRINT)
这道题是前来帮忙的 xhy 写的, 题目要求很简单, 输入一个数, 如果是偶数那么输出代码本身, 否则反转代码输出.
xhy 写了一个回文的代码, 这样就不用管奇数偶数了, 而且根据题目还可以获得 200 pts 的加分.很不错.
最后一天用了很短的时间完成的 code, 得分还不低 (貌似是所有题里 rank 最高的一个), 或许是性价比最高的一个 code 了. - P=NP (NP)
这道题的题目描述讨论了半天也没明白, 最终放弃. 直接贴出英文题目描述, 做出来的神牛 (比如 oldherl) 来讲解一下...
"Given an directed graph, find out the minimal set of vertex such that all vertex not in the set have atleast one edge in the set." - P!=NP (TESTGEN)
这道题是为上一道题出测试数据 (想起 SRM 了), 以上一道题 submit 的代码跑的情况评分. 因为前一道题没看懂, 加上最后还有 10 分钟的时候才开写, 所以输出了一个基本是完全图的图草草了事. 这道题至今还没出成绩. - Arbit Code (ARBIT)
此题做的比较爽. 给一段会 TLE 的代码 (实际测试证明还会 RE), 要求改成能够 AC 的代码. 不知道代码是干什么的, 只有数据范围.
这道题我们的做法是, 把一个范围内 (刚开始是 1~20, 后来为了测试增加到了 1~50) 的所有输入全部打出来, 然后分析规律.
刚开始的成果是, 求 f(a, b)的时候, 把 b 从 1 到 a 列出表格, 发现每到 a 的约数才发生变化.
接下来我发现对于素数和素数的幂, 它们的 f 的变化规律是按照比它小的幂变化 (不太好描述, 想知道的话自己输出几个比如 a = 27 或者 16 就能发现了).
然后木木又发现了 f(a, 1) = phi(a) (这里 phi 是欧拉函数).
最后时刻木木大胆猜测:
当 b = 1 时, f(a, b) = phi(a);
当 b 不是 a 的约数 (a % b != 0) 时, f(a, b) = f(a, b - 1);
当 b 是 a 的约数时, f(a, b) = f(a, b - 1) + f(a / b, 1).
然后写了个 code submit 上去, 挂了.
差点就认为这个推测不对, 但是本地测试 100 以内的数据发现和给出的程序输出完全匹配.
最后偶然发现, 有一句要做 t * ((i - 1) / i) (不用说也知道是求欧拉函数时候写的), 我当初写的是 t * (i - 1) / i, 而 t * (i - 1) 会爆掉 int... 改成 t / i * (i - 1) 就 AC 了. - Give It a try (THINK)
这道题是最有意思的, 要求破解三个密码, 没有任何提示.
第一个密码很简单, 一篇文章, 把里面所有的大写字母挑出来拼在一起, 就是答案了.
第二个密码是一个 32 * 241的 01 矩阵, 最后也不知道是啥意思, 只知道答案是 2.
第三个密码, 刚开始一看就感觉是一个简单的 26 个字母的置换, 然后还推出了 p => e, 另外还找到了三个 p 连在一起的一个突破口. 但是无奈没有破解经验, 加上文章里竟然 26 个字母都是齐全的, 让我有点打退堂鼓, 所以没有一鼓作气破解出来, 很遗憾. 其实想想, 当初直接按照统计学的字母出现频率解密, 然后再做微调, 应该都可以把密码破出来了... 很无奈.
比赛基本就是这样, 最后的 1234 分真的不是有意为之... 运气比较好吧.
-------------------我是爱情的分隔线-------------------
今天情人节, 白天在家待了一天 (本来说要和 lxc, djs 去打台球, 一想今天人应该多就没去), 晚上去 FNOI (还迟到了), 就这么度过了情人节.
放一张图, 从 M67 那里看到的, 来源是 Abstruse Goose (来源页面).
祝各位情人节快乐, 估计我能在本科上完之前找到第一个 GF 就很不错咯... 光棍节还可以一直过下去, 很满足很满足...
p.s. 文章写完正好 0:00, 情人节过去了... 这篇文章的分类想了很久是 About Computer 还是 About
Life, 最终还是放在了前者里...
我还是决定参加一下codecraft, 接近oi的题目还是我比较喜欢的..
话说我很久没参加过网上比赛了, 一下参加usaco monthly感觉好没策略.. srm还是参加着玩吧, 跌就跌, 认了..
btw, 啥是fnoi?
Abstruse Goose真正情人节的漫画更MO一点...
@alft: FNOI是天津本地的一个OI组织...俗话叫做课外班...我一直在那儿学
我最近在用ManicTime...记录我在都在用哪些软件...用多长时间...
感觉这个东西记录下来直接发布到我的网站上那就好了...
可以利用PHPRPC的...
当然如果ManicTime有API才行...
诡异...
你得分1234
你这个是第123个blog 文章
而你又是12月中的一个诞生
又是1日之内出生的...
况且又是情人节...难道...?
@Mgccl:
“而你又是12月中的一个诞生
又是1日之内出生的...”
没看懂。。。
Fnoi现在感觉清净不少……你俩来之后有意思多了……
那题应该是说给一个有向图,要找出最小的点集,使得所有不属于该点集的点都至少有一条指向该集的边吧。