<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>Rest Valley &#187; icpc</title> <atom:link href="http://lihdd.net/tag/icpc/feed/" rel="self" type="application/rss+xml" /><link>http://lihdd.net</link> <description>The scratchpad of quark</description> <lastBuildDate>Sat, 09 Oct 2010 13:56:19 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=</generator> <item><title>校赛又一年</title><link>http://lihdd.net/university-acm-contest-2010/</link> <comments>http://lihdd.net/university-acm-contest-2010/#comments</comments> <pubDate>Sat, 10 Apr 2010 17:53:14 +0000</pubDate> <dc:creator>quark</dc:creator> <category><![CDATA[Life]]></category> <category><![CDATA[icpc]]></category><guid
isPermaLink="false">http://lihdd.net/?p=368</guid> <description><![CDATA[又是一年校赛，和去年相比，今年的队友以及我的想法都很不一样了。 解题报告推荐看hhanger裁判的版本，十分好。我这里是流水账，不要在这里期待什么 早上的闹铃响了，意识到 8:45 是报名截止时间。速度赶去紫金港校区，结果发现来得比较早了，报名也不需要三个人的学生证，队友 asmn 准备吃完午饭再过来 。很快找到了 moondy 一行人，一起去吃早饭，看来没有在玉泉校区解决早饭是明智的啊。 抽签是 007 号，还在用 CRT 显示器的一个机房，不过距离打印机特别近。学校的机器一如既往地存在着 Netbeans 3.x，试验了 Java， Dev-cpp 和 IE 浏览器没有问题之后，又玩了玩 cygwin。大概我们试的东西有些多，我到其他机房去串门的时候，认识的人已经很少了 我觉得比赛的时候喝水比较重要，asmn 可能会没有准备齐全就赶过来，就去超市买了一些饮料和三支笔。回到 218 之后看着 watashi 在笔记本上玩游戏，仰慕之中很快眼花了，睡了一会儿。醒来的时候大家就都到齐了，很快进入了赛场。赛场外围有非常多的粉红色气球，是 A，想必这一题必须很简单了吧。 moondy 带去了 vls 的吉祥物，看起来很可爱的样子，不知道有没有被拍下来。赛后 asmn 好奇起来，去扒吉祥物的衣服，被 moody 制止了 -_- 比赛开始后，我填写了登陆信息，设置好 Dev-cpp，然后 moondy 说 A 题不会做，好在 asmn 看过后很快秒杀了。lam 送来了第一个气球，大家都比较兴奋。接着 moondy 把 I 题秒杀了，我却还在读中间的三道题，我发现 E 题很容易的样子，写了一半发现输入中的 t1 [...]]]></description> <content:encoded><![CDATA[<p>又是一年校赛，和<a
href="http://lihdd.net/2009/03/%E5%8F%88%E6%98%AF%E4%B8%80%E5%B9%B4%E6%A0%A1%E8%B5%9B/">去年</a>相比，今年的队友以及我的想法都很不一样了。</p><p>解题报告推荐看<a
title="2010校赛 Judge’s View 和 解题报告" href="http://www.hhanger.com/blog/?p=438">hhanger裁判的版本</a>，十分好。我这里是流水账，不要在这里期待什么 <img
src='http://lihdd.net/wp-includes/images/smilies/hmm.png' alt='.~.' class='wp-smiley' /> <span
id="more-368"></span></p><p>早上的闹铃响了，意识到 8:45 是报名截止时间。速度赶去紫金港校区，结果发现来得比较早了，报名也不需要三个人的学生证，队友 asmn 准备吃完午饭再过来 <img
src='http://lihdd.net/wp-includes/images/smilies/sigh.png' alt=':sigh:' class='wp-smiley' /> 。很快找到了 moondy 一行人，一起去吃早饭，看来没有在玉泉校区解决早饭是明智的啊。</p><p>抽签是 007 号，还在用 CRT 显示器的一个机房，不过距离打印机特别近。学校的机器一如既往地存在着 Netbeans 3.x，试验了 Java， Dev-cpp 和 IE 浏览器没有问题之后，又玩了玩 cygwin。大概我们试的东西有些多，我到其他机房去串门的时候，认识的人已经很少了 <img
src='http://lihdd.net/wp-includes/images/smilies/angry.png' alt='):' class='wp-smiley' /></p><p>我觉得比赛的时候喝水比较重要，asmn 可能会没有准备齐全就赶过来，就去超市买了一些饮料和三支笔。回到 218 之后看着 <a
href="http://watashi.ws/blog/">watashi</a> 在笔记本上玩游戏，仰慕之中很快眼花了，睡了一会儿。醒来的时候大家就都到齐了，很快进入了赛场。赛场外围有非常多的粉红色气球，是 A，想必这一题必须很简单了吧。</p><p>moondy 带去了 vls 的吉祥物，看起来很可爱的样子，不知道有没有被拍下来。赛后 asmn 好奇起来，去扒吉祥物的衣服，被 moody 制止了 -_-</p><p>比赛开始后，我填写了登陆信息，设置好 Dev-cpp，然后 moondy 说 A 题不会做，好在 asmn 看过后很快秒杀了。<a
href="http://wyest.blogbus.com/">lam</a> 送来了第一个气球，大家都比较兴奋。接着 moondy 把 I 题秒杀了，我却还在读中间的三道题，我发现 E 题很容易的样子，写了一半发现输入中的 t1 可能是无序的，然后引入了 set，虽然这时候我觉得题目可能会有两种理解，不过交过发现 AC 后就没有继续管它了 <img
src='http://lihdd.net/wp-includes/images/smilies/tongue.png' alt=':p' class='wp-smiley' /></p><p>接着是 asmn 搞定了一道难题 G，虽然这次在三人检查下没有出现以前忘记加 <code>#include</code> 而 CE 的情况，但是却因为没有注释掉 <code>freopen</code> 而悲剧了一次 -,-</p><p>然后 moondy 很快搞定了 B，我觉得是比较需要人肉的题，真的太快了。这次是 LinYue 送来了气球，说“还剩一题”，那道题显然是 D，我自己对 D 的拙见是倘若只有不到 8 个 Case，那么一定可以过的，不过罚时可能难看一些了 -,- 三十个 Case 就算了。</p><p>下面大家就是去 yy 剩下的题目了，我觉得 H 的题目描述很不清楚，moondy 也有同感，但是 hhanger 裁判 No response，原来没有看过 Sample 是不会明白的，觉得可以做的样子，但是还有没看的题，moondy 介绍了 C，我觉得好像可以做的样子，但是具体怎么还做不确定。听到对面的队伍在讨论 D，我转过头看了看 asmn，也在笑，觉得很开怀。</p><p>接着，我想到了一种枚举方法，认为 C 可以做了，不过有一点担心会 TLE，和 asmn 讨论了一下，确认了算法的正确性，不过在许多细节上要很小心，很多 +1 和 -1 的问题。对 H 我也有了一些想法，moondy 也对 F 比较有想法，讨论后决定我写 C，moondy 写 F，asmn 写 H。接着就是三个人不断地写、调试三道题，打印了很多草稿纸。moondy 率先把 F 过了，我在想一些细节问题，接着 C 和 H 都相继 Wrong Answer 了，这时候大家有些沮丧，大概也有些疲劳了吧，会有各种想不清楚和低级错误。我相信 C 既然没有 TLE 的话一定是可以搞定的，moondy 和 asmn 发现 H 算法想得简单了，看起来是来不及改了，只有 C 有希望了，压力好大 -,- 突然 moondy 发现有一句 if 很奇怪，我一看，原来是之前修改代码的时候漏掉了这里，果断搞定，在最后十分钟内过了 C <img
src='http://lihdd.net/wp-includes/images/smilies/very_happy.png' alt='^_^' class='wp-smiley' /> 还有最后的 007 分钟，asmn 象征性地交了一个 D，从 ranklist 看来，其他队看起来没有保留的题目了，很欢喜。想必大家都觉得不错吧，无论是最后的成绩或是题目本身来说。</p><p>皆大欢喜的背后，还是有许多可以改进的地方的，不过每次具体情况都不一样，这次觉得要注意问题A，也许下次比赛的时候就会发生问题B，所以不多说什么了，经验是慢慢积累的。现在我看来，比赛等各种活动的意义除了对经验和实力的影响，更重要的地方在于人与人的互动，正如谷歌曾经用的愚人节广告词：“没人没乐趣，有人有真谛”，很高兴能处在这样一个和谐的团体，感谢每一个人。最后，bg 会有的 <img
src='http://lihdd.net/wp-includes/images/smilies/wink.png' alt='^_.' class='wp-smiley' /></p> ]]></content:encoded> <wfw:commentRss>http://lihdd.net/university-acm-contest-2010/feed/</wfw:commentRss> <slash:comments>13</slash:comments> </item> <item><title>上海赛区流水帐</title><link>http://lihdd.net/acm-in-shanghai/</link> <comments>http://lihdd.net/acm-in-shanghai/#comments</comments> <pubDate>Tue, 27 Oct 2009 04:52:53 +0000</pubDate> <dc:creator>quark</dc:creator> <category><![CDATA[Life]]></category> <category><![CDATA[icpc]]></category> <category><![CDATA[shanghai]]></category><guid
isPermaLink="false">http://lihdd.net/?p=224</guid> <description><![CDATA[第一次写这样的小结，结果变成了这样的流水帐，希望还好吧。小学的时候被灌输一个概念，日记作文之类的都要避免写成流水帐，记不清具体是什么原因，也许是写流水帐比较省力，没啥技术含量，老师阅读起来也平淡无奇吧。不过现在的我看起来还是比较喜欢流水帐的 :-) (下面涉及一些人名称号以及一些符号缩写等可能只有一部分人知道是什么意思，如果你不太明白，就跳过吧) 虽然我之前来过上海几次了，不过这次住的“大众国际会议中心”确实比较偏远，从轨道交通3号线转到轨道交通9号线坐到“”下，这里出租车也比较少，黑车比较多，行走的是漆黑的几乎无人区的夜路，尤其是快到宾馆的那一截，yz居然提议这段路可以步行过去 这段时间上海移动似乎有点问题，手机信号极其不好，GRPS连接很容易失败，这几天我还遇到过“仅限紧急呼叫”、“无服务”、“未注册的SIM卡”这样的异常情况，上海的同学也表示最近打电话中途容易莫名其妙断掉。 来的时候圆阿姨发短信来催稿了，关于MSTC月刊，我主讲的Word小课堂的内容，这时候怎么可能写 于是用“消失中”回复，圆阿姨似乎有点不高兴的样子，暂时无视了。 宾馆提供了免费的网络，但是一个双人间只有一根网线，用的是和紫金港校区类似的华为的验证，只是验证页面的用户名和密码都被自动填好了，可以直接连上互联网。这根网线被范叔占用了。我找到了一个免费的未加密的无线网，看起来是一台DLink路由器提供的，询问得知不是宾馆提供的，不太敢用，扫描了一下发现有8台机器也连上了那个无线路由，其中几台还用了Apache for Windows提供了HTTP服务。范叔的无线共享也没有弄好，于是就凑合用这个无线了，实际测试速度大约比hsys的网络慢2-3倍，而且DNS服务几乎不可用，改用其他的DNS就好多了。 24日上午的开幕式，在东华大学的图文信息中心，进入的时候要进行体温检查。领导迟到了1个多小时，之间一直在循环大声播放东华大学的洗脑宣传片，移动信号也是极其弱，早知道把防噪声耳塞带来了 东华大学很大牌的样子，领导讲话还有人翻译，不过由于迟到导致时间紧张的原因，只有一部分的讲话才有翻译。东华大学的大牌还体现在开幕式会场的每个座位都发了一瓶水，这次要使用东华大学的未命名评测系统，还有和正式赛使用相同裁判的网上的同步赛等。 开幕式和提问结束后就是漫长而无聊的热身赛了，由于领导迟到耽误，我们入场的时候比赛已经开始了，也就不期待如何秒杀题目了。第一印象是熟悉的Ubuntu，和网络预赛一样的东华专有评测系统，以及质量很好的各种颜色的pp气球。B题就是把输入输出，我写了很短的C程序完成这个任务，发现评测系统会判断程序结束状态，必须正常返回0，否则会被判成Runtime Error。 赛场用的键盘是方正的某种超薄键盘，我们队都感觉怪怪的不好用，用起来很容易按错。这个键盘右边还有一排功能键，我依次按过来，前几个键似乎都没有用的样子，最后一个键按下去就立即出现关机动画了 遭到队友的bs之后，只好再打开，发现之前说的热身赛的时候会使用还原卡有问题，修改过的配置都还在。比赛用的开题密码是装在信封里面的，每个队都一样，但是每个队自己的登录密码并没有发，找到了旁边的一个志愿者mm来，她试了两次就输入对了密码，原来是table10（当时还不知道大小写）。这样重新登录之后提交历史和提问历史都没有了，好不人道啊。 然后发现A的范围很小，于是用netbeans写了一个C++程序暴力过掉了，赛场提供的netbeans 6.5果然要比6.7要弱一些。只剩下C了，hexing翻了一些数论书也没有明确的线索。我们商量了一下没有什么结果，因为是热身赛，我就yy了一个看起来可能比纯暴力好一点的暴力算法去写，果然是TLE。然后人肉试验了一些小数据，发现x1+x2+x3不是b就是2b，于是批量进一步验证，结果中间hexing把判断质数的函数写错了 ，Debug后确认了这样的规律，三个气球之后就开始试试别的东西了，我用Java写了B，发现netbeans没有提示文档，还有返回结果可能是PE，并且问问题的功能形同虚设，什么问题都是&#8221;Sorry, no response&#8221;。让人气恼的是交题有30秒限制，就是每当按一次Submit按钮，不管成功或者因为30秒间隔没有到而失败，都会重新开始30秒计时。这个评测系统在交题的一瞬间会把程序在本地编译，据说有一条原因是“如果你想把裁判机搞挂，你自己的机器要先挂”，编译的时候CPU占用率很高，通过GNOME面板上面的系统监视框可以大约知道什么时候过了30秒。顺便提一下这里的打印，必须要在那个评测系统客户端打印，打印的页边距比较宽，字体是单一非等宽字体，没有页码和时间戳。 觉得差不多了，我就开始扫荡送来的食品，撕开火腿肠比较不容易，再之后就拿着相机到处拍了。在yukkuri那里又按了一下关机键，惨无人道地迅速关机了，据说还有一个问题没有回答，于是又被bs了。不过我想大概也会是No response的吧 重启后同样遇到密码问题，本来要让志愿者来输密码的，我自作主张地猜了几个，原来是table2。hsys扫了一遍Ranklist，发现许多之前测试这个评测系统的痕迹。 有许多队伍已经走了，于是在yukkuri旁边的一台机器上玩国际象棋，还是能轻松虐掉电脑啊 8-) 又和jack玩了几局双人贪吃蛇。然后就回到自己队伍的位置了，这时候在尝试用二分图匹配的方法剪枝去处理A，但是一直WA。我就参与了调试，构造了一个case，立即发现问题，然后瞬间改好，就过了。 又无聊了一段时间，早知道和LAF学去草坪上睡觉就好了。热身赛的5个小时结束了，我想带出来一个气球却被一位志愿者mm收走了 :-( 去吃饭，在食堂看到很多人手里拿着气球…… 吃完饭就去超市买东西，然后就回宾馆了。 回去就睡着了，之间发生了清醒的奇怪的事情，晚上的时候完全清醒过来，连上网灌灌水，圆阿姨又来短信催稿了，这时候更不可能去写了 ，准备一下要带的东西，就又睡了。 第二次比赛，远远没有刚结束的第一次那样紧张了。这一次也不需要冷笑话来缓解紧张气氛，冷静地进场，排队上厕所，开始比赛。 我是从前面开始看题的，第一题看到那个图就想先跳过去了，开始看第二题，感觉是矩阵乘法之类的，但是似乎还有其他问题。就在我还在纠结于如何暴力打出第二题的一些小数据时候，EZ已经对后面的F有想法了，写了一个简单暴力的版本，果然TLE。这时候我还在想B和时不时地喝水和去厕所，hexing说A很简单，最多只有65536种状态，于是我就看了一遍A，果然很容易，就开始写。写完了却没有过Sample 动用了静态调试和动态调式，怀疑错许多地方，许久才发现交换两位的地方写错了，看起来还是有一丝紧张，应该是： idx ^ &#40;&#40;1 &#60;&#60; &#40;i - 1&#41;&#41; + &#40;1 &#60;&#60; &#40;j - 1&#41;&#41;&#41;; 在代码中却是： idx ^ &#40;&#40;idx &#38; &#40;1 [...]]]></description> <content:encoded><![CDATA[<p><img
class="alignright size-full wp-image-225 frame" title="acm-icpc" src="http://lihdd.net/wp-content/uploads/2009/10/acm-icpc.png" alt="acm-icpc" width="96" height="96" />第一次写这样的小结，结果变成了这样的流水帐，希望还好吧。小学的时候被灌输一个概念，日记作文之类的都要避免写成流水帐，记不清具体是什么原因，也许是写流水帐比较省力，没啥技术含量，老师阅读起来也平淡无奇吧。不过现在的我看起来还是比较喜欢流水帐的 :-) <span
id="more-224"></span></p><p><span
style="color: #999999;"><em>(下面涉及一些人名称号以及一些符号缩写等可能只有一部分人知道是什么意思，如果你不太明白，就跳过吧)</em></span></p><p>虽然我之前来过上海几次了，不过这次住的“大众国际会议中心”确实比较偏远，从轨道交通3号线转到轨道交通9号线坐到“”下，这里出租车也比较少，黑车比较多，行走的是漆黑的几乎无人区的夜路，尤其是快到宾馆的那一截，yz居然提议这段路可以步行过去 <img
src='http://lihdd.net/wp-includes/images/smilies/icon_eek.gif' alt='8-O' class='wp-smiley' /></p><p>这段时间上海移动似乎有点问题，手机信号极其不好，GRPS连接很容易失败，这几天我还遇到过“仅限紧急呼叫”、“无服务”、“未注册的SIM卡”这样的异常情况，上海的同学也表示最近打电话中途容易莫名其妙断掉。</p><p>来的时候圆阿姨发短信来催稿了，关于MSTC月刊，我主讲的Word小课堂的内容，这时候怎么可能写 <img
src='http://lihdd.net/wp-includes/images/smilies/icon_eek.gif' alt='8-O' class='wp-smiley' /> 于是用“消失中”回复，圆阿姨似乎有点不高兴的样子，暂时无视了。</p><p>宾馆提供了免费的网络，但是一个双人间只有一根网线，用的是和紫金港校区类似的华为的验证，只是验证页面的用户名和密码都被自动填好了，可以直接连上互联网。这根网线被范叔占用了。我找到了一个免费的未加密的无线网，看起来是一台DLink路由器提供的，询问得知不是宾馆提供的，不太敢用，扫描了一下发现有8台机器也连上了那个无线路由，其中几台还用了Apache for Windows提供了HTTP服务。范叔的无线共享也没有弄好，于是就凑合用这个无线了，实际测试速度大约比hsys的网络慢2-3倍，而且DNS服务几乎不可用，改用其他的DNS就好多了。</p><p>24日上午的开幕式，在东华大学的图文信息中心，进入的时候要进行体温检查。领导迟到了1个多小时，之间一直在循环大声播放东华大学的洗脑宣传片，移动信号也是极其弱，早知道把防噪声耳塞带来了 <img
src='http://lihdd.net/wp-includes/images/smilies/icon_redface.gif' alt=':oops:' class='wp-smiley' /> 东华大学很大牌的样子，领导讲话还有人翻译，不过由于迟到导致时间紧张的原因，只有一部分的讲话才有翻译。东华大学的大牌还体现在开幕式会场的每个座位都发了一瓶水，这次要使用东华大学的未命名评测系统，还有和正式赛使用相同裁判的网上的同步赛等。</p><p>开幕式和提问结束后就是漫长而无聊的热身赛了，由于领导迟到耽误，我们入场的时候比赛已经开始了，也就不期待如何秒杀题目了。第一印象是熟悉的Ubuntu，和网络预赛一样的东华专有评测系统，以及质量很好的各种颜色的pp气球。B题就是把输入输出，我写了很短的C程序完成这个任务，发现评测系统会判断程序结束状态，必须正常返回0，否则会被判成Runtime Error。</p><p>赛场用的键盘是方正的某种超薄键盘，我们队都感觉怪怪的不好用，用起来很容易按错。这个键盘右边还有一排功能键，我依次按过来，前几个键似乎都没有用的样子，最后一个键按下去就立即出现关机动画了 <img
src='http://lihdd.net/wp-includes/images/smilies/icon_eek.gif' alt='8-O' class='wp-smiley' /> 遭到队友的bs之后，只好再打开，发现之前说的热身赛的时候会使用还原卡有问题，修改过的配置都还在。比赛用的开题密码是装在信封里面的，每个队都一样，但是每个队自己的登录密码并没有发，找到了旁边的一个志愿者mm来，她试了两次就输入对了密码，原来是table10（当时还不知道大小写）。这样重新登录之后提交历史和提问历史都没有了，好不人道啊。</p><p>然后发现A的范围很小，于是用netbeans写了一个C++程序暴力过掉了，赛场提供的netbeans 6.5果然要比6.7要弱一些。只剩下C了，hexing翻了一些数论书也没有明确的线索。我们商量了一下没有什么结果，因为是热身赛，我就yy了一个看起来可能比纯暴力好一点的暴力算法去写，果然是TLE。然后人肉试验了一些小数据，发现x<sub>1</sub>+x<sub>2</sub>+x<sub>3</sub>不是b就是2b，于是批量进一步验证，结果中间hexing把判断质数的函数写错了 <img
src='http://lihdd.net/wp-includes/images/smilies/icon_eek.gif' alt='8-O' class='wp-smiley' /> ，Debug后确认了这样的规律，三个气球之后就开始试试别的东西了，我用Java写了B，发现netbeans没有提示文档，还有返回结果可能是PE，并且问问题的功能形同虚设，什么问题都是&#8221;Sorry, no response&#8221;。让人气恼的是交题有30秒限制，就是每当按一次Submit按钮，不管成功或者因为30秒间隔没有到而失败，都会重新开始30秒计时。这个评测系统在交题的一瞬间会把程序在本地编译，据说有一条原因是“如果你想把裁判机搞挂，你自己的机器要先挂”，编译的时候CPU占用率很高，通过GNOME面板上面的系统监视框可以大约知道什么时候过了30秒。顺便提一下这里的打印，必须要在那个评测系统客户端打印，打印的页边距比较宽，字体是单一非等宽字体，没有页码和时间戳。</p><p>觉得差不多了，我就开始扫荡送来的食品，撕开火腿肠比较不容易，再之后就拿着相机到处拍了。在yukkuri那里又按了一下关机键，惨无人道地迅速关机了，据说还有一个问题没有回答，于是又被bs了。不过我想大概也会是No response的吧 <img
src='http://lihdd.net/wp-includes/images/smilies/icon_rolleyes.gif' alt=':roll:' class='wp-smiley' /> 重启后同样遇到密码问题，本来要让志愿者来输密码的，我自作主张地猜了几个，原来是table2。hsys扫了一遍Ranklist，发现许多之前测试这个评测系统的痕迹。</p><p>有许多队伍已经走了，于是在yukkuri旁边的一台机器上玩国际象棋，还是能轻松虐掉电脑啊  8-)   又和jack玩了几局双人贪吃蛇。然后就回到自己队伍的位置了，这时候在尝试用二分图匹配的方法剪枝去处理A，但是一直WA。我就参与了调试，构造了一个case，立即发现问题，然后瞬间改好，就过了。</p><p>又无聊了一段时间，早知道和LAF学去草坪上睡觉就好了。热身赛的5个小时结束了，我想带出来一个气球却被一位志愿者mm收走了  :-(  去吃饭，在食堂看到很多人手里拿着气球…… 吃完饭就去超市买东西，然后就回宾馆了。</p><p>回去就睡着了，之间发生了清醒的奇怪的事情，晚上的时候完全清醒过来，连上网灌灌水，圆阿姨又来短信催稿了，这时候更不可能去写了 <img
src='http://lihdd.net/wp-includes/images/smilies/icon_eek.gif' alt='8-O' class='wp-smiley' /> ，准备一下要带的东西，就又睡了。</p><p>第二次比赛，远远没有刚结束的第一次那样紧张了。这一次也不需要冷笑话来缓解紧张气氛，冷静地进场，排队上厕所，开始比赛。</p><p>我是从前面开始看题的，第一题看到那个图就想先跳过去了，开始看第二题，感觉是矩阵乘法之类的，但是似乎还有其他问题。就在我还在纠结于如何暴力打出第二题的一些小数据时候，EZ已经对后面的F有想法了，写了一个简单暴力的版本，果然TLE。这时候我还在想B和时不时地喝水和去厕所，hexing说A很简单，最多只有65536种状态，于是我就看了一遍A，果然很容易，就开始写。写完了却没有过Sample <img
src='http://lihdd.net/wp-includes/images/smilies/icon_neutral.gif' alt=':-|' class='wp-smiley' /> 动用了静态调试和动态调式，怀疑错许多地方，许久才发现交换两位的地方写错了，看起来还是有一丝紧张，应该是：</p><div
class="wp_syntax"><div
class="code"><pre class="cpp" style="font-family:monospace;">idx <span style="color: #000040;">^</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #008000;">&#40;</span>i <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">+</span> <span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #008000;">&#40;</span>j <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span></pre></div></div><p>在代码中却是：</p><div
class="wp_syntax"><div
class="code"><pre class="cpp" style="font-family:monospace;">idx <span style="color: #000040;">^</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>idx <span style="color: #000040;">&amp;</span> <span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #008000;">&#40;</span>i <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">+</span> <span style="color: #008000;">&#40;</span>idx <span style="color: #000040;">&amp;</span> <span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #008000;">&#40;</span>j <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span></pre></div></div><p>这是因为后者的右边在判断两个位置是否可以交换中用到，复制粘贴相似代码后没有改过来。改完测了一下初始化打表时间，没有问题（这道题可以把表打全，不止前3步，也是瞬间完成的），交上去就1Y了，不过这时候已经是比赛开始一个小时了。</p><p>EZ发现H、I、J都可以做，尤其是H，只要敲好两个模块就可以过了（事后想想， <img
src='http://lihdd.net/wp-includes/images/smilies/icon_eek.gif' alt='8-O' class='wp-smiley' /> ），于是hexing去敲模块（打字快一些）。我又看了看C，EZ说C要分长字符串和短字符串两类讨论，短的直接暴力算，我认为分类讨论两种都是正确的算法一定是没前途的，就开始yy这一题，比较有想法（现在觉得也是很有前途的，不是二分结果Hash方法，但是没有OJ可以提供验证 <img
src='http://lihdd.net/wp-includes/images/smilies/icon_neutral.gif' alt=':-|' class='wp-smiley' /> ），觉得如果有时间的话一定可以完成C的。hexing抄完了模板，过了Sample，交上去却WA了，这时候换EZ写J，我和hexing讨论B，我想到了集训时的某个需要对100取模的题，moondy说可以算循环节，觉得这一题也可以这样做，不过我也怀疑O(P)的复杂度行不行，问了B题有多少测试数据，果然回复又是Sorry。鉴于手上有一份我写的矩阵乘法的Java版本模板，于是这道题决定是我来写（我们队只有我用Java）。J交上去也WA了，hexing去改H，这时候我在想是先写B呢，还是先写C（自认为已经有比较成熟的想法）呢，最后想想还是先写B吧。改过若干次的H交上去也还是不对，我们决定放弃H，去看看F是不是可以优化，EZ认为J他一定可以发现错误改好的，我就来写B，期间EZ改了几次J，这道题也过了。Java的模板比较长，我写完B交上去WA了，这时候一定是没有时间写C的了，就在想B会错在哪呢，顺便又用set&lt;int&gt;尝试了一下F，EZ对STL容器不熟悉的样子，先是RTE，后来又是TLE，这道题大概也是要放弃了（后来看解体报告知道是剪枝搜索，想想和预赛的A在某种程度上是一样的）。我和hexing讨论发现B中余数循环节不一定立即开始，于是我去改程序使它支持这种情况，让hexing去想一些case，这个时候时间已经不多了，没有想到case。自认为修改好的我过了Sample交上去又是WA <img
src='http://lihdd.net/wp-includes/images/smilies/icon_confused.gif' alt=':-?' class='wp-smiley' /> ，hexing怀疑了一些地方，都不是真正错的地方。最后几分钟，又有些奇奇怪怪的紧张了，代码中的变量命名并不友好，再加上被怀疑得我自己也思绪混乱了 <img
src='http://lihdd.net/wp-includes/images/smilies/icon_neutral.gif' alt=':-|' class='wp-smiley' /> 以至于最后到了时间也没改好，实际上最后一分钟我已经意识到问题的所在了，但是没有想好修改方法，结束后两分钟内就改好了，不过显然没有地方交了 <img
src='http://lihdd.net/wp-includes/images/smilies/icon_redface.gif' alt=':oops:' class='wp-smiley' /></p><p>结束后就俩气球，想应该是有铜牌了吧。在来上海之前，我的预期是银牌左右，比赛刚结束的时候有一点失落。</p><p>从这次比赛看，我觉得暴露的最大问题就是太慢了，特别体现在调试的时候，发现定位问题的速度。还有一个问题就是选坑能力，不过这也是一个没有答案的问题，大家都可能乐哉乐哉地跳错坑…… 如果不去做F和H的话，B肯定可以能过了，C也可能过，如果进度异常顺利的话，还有时间去看看E （旁白：想得轻松 -.-）</p><p>当然我觉得也是有一些好的地方的，尤其是由刚结束的宁波赛区获得来的经验，比如独立读题，就是有些题目有的地方废话很多，会有潜在的多种解释，在时间不紧张的情况下，不要由室友介绍题目大意，免得被灌输错误理解。再有就是毅然放弃一些题，比如这次的F、H。除了这些，还有一些我从一年前就觉得不错的地方，比如独立解题，如果一个人确信可以搞定某道题的话，就不需要分散队友的时间。不盲目跟风，如果确信可以做某一道题的话，才不管其他队的情况呢。遗憾的是这些是充满变化的，“确信”本身就是一个含糊不清的词。</p><p>东华大学的洗脑宣传片，抢气球的mm和奇怪的键盘都给我留下不太好的印象，参观无兴趣，结束后我就直奔复旦大学而去了。yz邪恶地说车票不能报销，我就决定步行到地铁站。随机问到的三名志愿者都不知道如何到复旦大学，于是就问了如何的到地铁站，沿途又问路了好几次，这里有一些人回答得很有问题，尤其是东华大学正门口的门卫 <img
src='http://lihdd.net/wp-includes/images/smilies/icon_eek.gif' alt='8-O' class='wp-smiley' /> 。步行途中遇到一好心人骑着摩托车带了我一段路程，又走了一截，总算到了松江大学城站。</p><p>碰巧在车站看到一位北师大大四（后来了解到）参赛mm，她也要去复旦，于是一同前往，路途不短，我们就聊了聊。她们队前一个小时就过了前两道题，后面很遗憾的一直没有过新的题，不过她们还要去哈尔滨赛区，我想那里应该是很有机会的吧。她似乎对杭州很熟悉的样子，抱怨上海公交很贵（北京人都这样），很奇怪她说要到复旦本部，应该和我的路线是一样的，却要最后转1号线，我是要走3号线的，结果询问她同学发现她去的校区原来是另一个 <img
src='http://lihdd.net/wp-includes/images/smilies/icon_eek.gif' alt='8-O' class='wp-smiley' /> 9号线到终点就要分别了，只好wave了。</p><p>然后我径自去复旦，期间和同学短信通信似乎有10分钟的延迟，从大柏树站下车之后还要坐两站公交，公交车站发现没有零钱，就近买了一个手抓饼，然后坐133路车到了复旦。呆了一段时间想到yz说第二天早上9点离开宾馆，就决定回去。回去的途中Fire打电话来说有骨灰级人物要bg，路途太远，只好错过了 <img
src='http://lihdd.net/wp-includes/images/smilies/icon_cry.gif' alt=':cry:' class='wp-smiley' /> 从地铁站那里几乎打不到一辆正规的出租车回宾馆，不过还是遇到了一辆，司机连续闯过俩红灯，速度地把我送回去了。回到宾馆后被yz告知是明天早上11点走，表示愤怒。不过发现居然有银牌，又感觉好一些。</p><p>连上网看了一份据说hhgg弄到的精简版解题报告，有些地方恍然大悟。惊奇地发现RVPN是可以用的，速度还有200KB/s左右，下载了一份大富翁4，这也是可以轻松虐电脑的 <img
src='http://lihdd.net/wp-includes/images/smilies/icon_rolleyes.gif' alt=':roll:' class='wp-smiley' /> 不过似乎没有几个人对这个游戏特别感兴趣，于是睡觉了。第二天早上7点有些清醒，想想早餐也没有特别吸引人的地方，而且比较困，就睡到10点了，爬起来收拾一下就准备离开宾馆了。即将离开宾馆的时候我们队去享受了一下宾馆门口的秋千，荡的幅度大一些我就有点受不了了，接着hexing也受不了，只有秋千达人EZ还在荡，不过我们抓拍到了一些有趣的照片 <img
src='http://lihdd.net/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /></p><p>之后发生的事情就比较平淡了，中午吃饭后和范叔玩了几局frozen-bubble，接着就顺利回来了。</p><p>希望还有比赛的各队都能取得如愿的成绩  :-) 回来后别忘了bg <img
src='http://lihdd.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> 。而我，就期待为数不多的下一年吧。</p> ]]></content:encoded> <wfw:commentRss>http://lihdd.net/acm-in-shanghai/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Exp++</title><link>http://lihdd.net/exp/</link> <comments>http://lihdd.net/exp/#comments</comments> <pubDate>Tue, 20 Oct 2009 07:42:40 +0000</pubDate> <dc:creator>quark</dc:creator> <category><![CDATA[Life]]></category> <category><![CDATA[daodao]]></category> <category><![CDATA[icpc]]></category> <category><![CDATA[ningbo]]></category><guid
isPermaLink="false">http://lihdd.net/?p=215</guid> <description><![CDATA[这次宁波之旅就要结束了，各种悲剧最终造就了最后的惨剧。 其实想想各种悲剧都是由Exp(经验值)不够引起的，后来再想想所有事情都可以是因为Exp不够而出现问题…… 出发的时候我就忘记带了各种充电装置，这应该是第二次了，这学期开学到学校也差一点没有带手机充电器，不过这个影响并不多。 赛场提供的OpenSolaris没有gvim，虽然Solaris有一些比Linux好的地方，比如运行NetBeans这样的Java程序会更快一些，malloc分配不到内存的时候只会暂停程序而不会把程序弄挂，但之前适应的gvim环境就用不成了。 正式比赛时用到了被粘贴错误的代码模板，浪费了一个多小时的时间 :-( 如果Exp不足，参加任何活动都可以Exp++的，这次也不例外。 以后不但要在队友描述题目的时候闭上耳朵，需要重写一道题的时候先合上眼睛，并且严禁在某个确定为简单的题上消耗超过1个小时的时间。对模板也要敢于怀疑。 事物总要辩证地看待，这几天还是有一些令人感到高兴的事情发生的。 宾馆比较赞，特别是自助早餐，算是我见过的最好的了吧，虽然有个别人评价很一般。 在比赛场地附近的一个学校见到了高中同学，看起来大家都很好的样子，高兴。 比赛期间桑葚同学在杭州为我抢到了刀爸的签名，十分感谢 :P]]></description> <content:encoded><![CDATA[<p>这次宁波之旅就要结束了，各种悲剧最终造就了最后的惨剧。<img
class="frame alignright size-full wp-image-217" title="生活的一半是倒霉" src="http://lihdd.net/wp-content/uploads/2009/10/life_tragedy.jpg" alt="生活的一半是倒霉" width="159" height="200" /></p><p>其实想想各种悲剧都是由Exp(经验值)不够引起的，后来再想想所有事情都可以是因为Exp不够而出现问题……<br
/> <span
id="more-215"></span></p><ul><li>出发的时候我就忘记带了各种充电装置，这应该是第二次了，这学期开学到学校也差一点没有带手机充电器，不过这个影响并不多。</li><li> 赛场提供的OpenSolaris没有gvim，虽然Solaris有一些比Linux好的地方，比如运行NetBeans这样的Java程序会更快一些，malloc分配不到内存的时候只会暂停程序而不会把程序弄挂，但之前适应的gvim环境就用不成了。</li><li> 正式比赛时用到了被粘贴错误的代码模板，浪费了一个多小时的时间 :-(</li></ul><p>如果Exp不足，参加任何活动都可以Exp++的，这次也不例外。</p><p>以后不但要<span
title="队友可能将错误的理解传授给你，而题目关于这方面的描述信息可能很少，这样被潜移默化地弄错并且不容易检查出来">在队友描述题目的时候闭上耳朵</span>，需要重写一道题的时候<span
title="基于已有的代码重写，很可能继承一些潜在的错误，由于同样的理由，也不容易发现">先合上眼睛</span>，并且严禁在某个确定为简单的题上消耗超过1个小时的时间。对模板也要敢于怀疑。<img
class="frame alignright size-full wp-image-216" title="刀爸的签名" src="http://lihdd.net/wp-content/uploads/2009/10/daodaodog_sign.jpg" alt="刀爸的签名" width="155" height="200" /></p><p>事物总要辩证地看待，这几天还是有一些令人感到高兴的事情发生的。</p><ul><li> 宾馆比较赞，特别是自助早餐，算是我见过的最好的了吧，虽然有个别人评价很一般。</li><li> 在比赛场地附近的一个学校见到了高中同学，看起来大家都很好的样子，高兴。</li><li>比赛期间桑葚同学<a
title="杭州行 - 慕容引刀" href="http://blog.sina.com.cn/s/blog_4735fb160100fewr.html" target="_blank">在杭州</a>为我抢到了<a
title="慕容引刀——刀刀慢画" href="http://blog.sina.com.cn/daodaodog" target="_blank">刀爸</a>的签名，十分感谢 :P</li></ul> ]]></content:encoded> <wfw:commentRss>http://lihdd.net/exp/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>又是一年校赛</title><link>http://lihdd.net/university-acm-contest-2009/</link> <comments>http://lihdd.net/university-acm-contest-2009/#comments</comments> <pubDate>Sun, 22 Mar 2009 14:52:21 +0000</pubDate> <dc:creator>quark</dc:creator> <category><![CDATA[Life]]></category> <category><![CDATA[icpc]]></category> <category><![CDATA[MSTC]]></category><guid
isPermaLink="false">http://lihdd.net/?p=122</guid> <description><![CDATA[又是天气预报不准的一天，又是一年的ACM校赛。 自从来到大学，我其实不想参加acm这样的比赛。在我看来，这样的比赛要取得好成绩需要高强度的、义无反顾的、不成仙便成仁练习。另一方面，Linux里面乱七八糟五花八门的好玩的东西迅速吸引了对Windows赶到乏味的我，一度到了难以自拔的地步。 现在，不再生疏Linux的我，对这一领域的热情慢慢降温，对Windows的抗拒也逐渐麻木。当我在这样一个中立的位置的时，对于各种事情，都以“大不自多，海纳江河”的态度来对待，自然对于acm这样的比赛也不要存在抗拒或者畏惧，去参加就好了。 这次校赛必须是三个人组队才可以参加，校队成员在内部自己组完了队，我有幸和楼梯男与pluskid（按年级排序）组成一队。各种各样的队名彰显着参赛人员的良好创意，我们队一致认为pluskid想到的“foobar”这个词比较好，就用这个当作队名了。正如这样一个词，是说不出来具体是什么意思一样，我们参赛的目标也是说不清楚的吧（我们队实际上只能算作是业余队，我自己已经很长时间没有做题目了，楼梯男似乎是和我一开始提到的那种想法相近吧，pluskid一直没有在算法竞赛这方面专业练习过）。也许这就是所谓的“有容乃大,无欲则刚”，我真的很喜欢这种感觉呢 :-) 由于学长们都在住在玉泉校区，上午的签到和抽签是我去的，不幸地抽到了三楼的机器，内存大小和CPU速度都是二楼机器的四分之一，显示器是CRT型的，相比之下，二楼的大分辨率LCD机器真是很好啊。编程工具虽然有很多，但是大多比较旧，没有Visual Studio .NET，我们最后是使用Dev-cpp来写程序的，只有必须要跟踪调试的时候才会用VC6。 下午比赛从1:30开始，4个小时9道题目。我读前三题，陆续觉得都可以做，第三题忽略了测试数据的强度，错了几次才对，前两题都写一遍就对了。我觉得自己写程序这么长时间，最好的感觉就是代码稳定可靠性好，写出来之后不用改来改去的，有时候程序写出来就达到预期效果，自己都感到惊奇。 虽然是一个队，但是三个人之间有些做法是不同的。我条件反射似地看完三道题再开始做，沿袭以前很久以前比赛的习惯。殊不知ACM比赛提前搞定些题目还是划算的，楼梯男则关注所有队的进展，从最容易的题目开始做起，也很快搞定了两道题。这次比赛有一道比较难的几何题，涉及到浮点数，解方程计算等等。我最不喜欢有浮点数的题目，pluskid对计算机图形学方面有些研究，最后完成了这道题 :-)。 后来我们还尝试了另外的两道题，结果因为时间不够用而留下了遗憾。不过已经排到了第四位， 不错的位置了，前三队都是校队成员。我觉得这次比赛，我们队配合得挺好的，也有一些幸运的因素，最后结果也挺好的，还留下了快乐的记忆 对这次比赛不太关心的同学，文章到这里就结束了。下面转载一份解题报告，是HHanger写的： 校赛解题报告精简版 by HH A Square Root Day 现场赛36.13% (155/429)/同步赛42.27% (290/686) 秒杀题，但是在题意方面出了一些问题，一种理解是日和月必须相同，于是一年最多只有一个Square Root Day，一年有一个Square Root Day当且仅当该年的最后2或3位是1-12的平方，这12个完全平方数中的一个。还有一种理解是日和月可以不相同，可以一个是后三位的平方根，另一个是后两位的平方根，于是会多几个日子，比如1225年5月15日。因为题意不清，所以最后两种理解都算过。 B Number of Containers 现场赛4.46% (32/717)/同步赛20.73% (102/492) 中等难度题，n可以很大，所以O(n)的算法显然是会TLE的。首先可以发现，f(n, x) = (n &#8211; x) / x，也就是n / x &#8211; 1，所以求解F(n)就是i从1到n，对n / i进行求和，最后再减去n就是答案。考察n / i随着i增大时候的情况，可以发现i越增大，n / i这个值变化得越小。于是可以把整个求和过程分成两块，对以1 &#60;= [...]]]></description> <content:encoded><![CDATA[<div
class="ias right"><div
class="inner"><img
class="size-full wp-image-124" title="acm_zju_logo" src="http://lihdd.net/wp-content/uploads/2009/03/cpc_acm.jpg" alt="acm_zju_logo" width="103" height="84" align="right" /></div></div><p>又是天气预报不准的一天，又是一年的ACM校赛。<br
/> <span
id="more-122"></span></p><p>自从来到大学，我其实不想参加acm这样的比赛。在我看来，这样的比赛要取得好成绩需要高强度的、义无反顾的、不成仙便成仁练习。另一方面，Linux里面乱七八糟五花八门的好玩的东西迅速吸引了对Windows赶到乏味的我，一度到了难以自拔的地步。</p><p>现在，不再生疏Linux的我，对这一领域的热情慢慢降温，对Windows的抗拒也逐渐麻木。当我在这样一个中立的位置的时，对于各种事情，都以“大不自多，海纳江河”的态度来对待，自然对于acm这样的比赛也不要存在抗拒或者畏惧，去参加就好了。</p><p>这次校赛必须是三个人组队才可以参加，校队成员在内部自己组完了队，我有幸和楼梯男与pluskid（按年级排序）组成一队。各种各样的队名彰显着参赛人员的良好创意，我们队一致认为pluskid想到的“foobar”这个词比较好，就用这个当作队名了。正如这样一个词，是说不出来具体是什么意思一样，我们参赛的目标也是说不清楚的吧（我们队实际上只能算作是业余队，我自己已经很长时间没有做题目了，楼梯男似乎是和我一开始提到的那种想法相近吧，pluskid一直没有在算法竞赛这方面专业练习过）。也许这就是所谓的“有容乃大,无欲则刚”，我真的很喜欢这种感觉呢 :-)</p><p>由于学长们都在住在玉泉校区，上午的签到和抽签是我去的，不幸地抽到了三楼的机器，内存大小和CPU速度都是二楼机器的四分之一，显示器是CRT型的，相比之下，二楼的大分辨率LCD机器真是很好啊。编程工具虽然有很多，但是大多比较旧，没有Visual Studio .NET，我们最后是使用Dev-cpp来写程序的，只有必须要跟踪调试的时候才会用VC6。</p><p>下午比赛从1:30开始，4个小时9道题目。我读前三题，陆续觉得都可以做，第三题忽略了测试数据的强度，错了几次才对，前两题都写一遍就对了。我觉得自己写程序这么长时间，最好的感觉就是代码稳定可靠性好，写出来之后不用改来改去的，有时候程序写出来就达到预期效果，自己都感到惊奇。</p><p>虽然是一个队，但是三个人之间有些做法是不同的。我条件反射似地看完三道题再开始做，沿袭以前很久以前比赛的习惯。殊不知ACM比赛提前搞定些题目还是划算的，楼梯男则关注所有队的进展，从最容易的题目开始做起，也很快搞定了两道题。这次比赛有一道比较难的几何题，涉及到浮点数，解方程计算等等。我最不喜欢有浮点数的题目，pluskid对计算机图形学方面有些研究，最后完成了这道题 :-)。</p><p>后来我们还尝试了另外的两道题，结果因为时间不够用而留下了遗憾。不过已经排到了第四位， 不错的位置了，前三队都是校队成员。我觉得这次比赛，我们队配合得挺好的，也有一些幸运的因素，最后结果也挺好的，还留下了快乐的记忆 <img
src='http://lihdd.net/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /></p><p>对这次比赛不太关心的同学，文章到这里就结束了。下面转载一份解题报告，是HHanger写的：</p><blockquote><p><strong>校赛解题报告精简版 by HH</strong></p><p>A Square Root Day      现场赛36.13% (155/429)/同步赛42.27% (290/686)<br
/> 秒杀题，但是在题意方面出了一些问题，一种理解是日和月必须相同，于是一年最多只有一个Square Root Day，一年有一个Square Root Day当且仅当该年的最后2或3位是1-12的平方，这12个完全平方数中的一个。还有一种理解是日和月可以不相同，可以一个是后三位的平方根，另一个是后两位的平方根，于是会多几个日子，比如1225年5月15日。因为题意不清，所以最后两种理解都算过。</p><p>B Number of Containers      现场赛4.46% (32/717)/同步赛20.73% (102/492)<br
/> 中等难度题，n可以很大，所以O(n)的算法显然是会TLE的。首先可以发现，f(n, x) = (n &#8211; x) / x，也就是n / x &#8211; 1，所以求解F(n)就是i从1到n，对n / i进行求和，最后再减去n就是答案。考察n / i随着i增大时候的情况，可以发现i越增大，n / i这个值变化得越小。于是可以把整个求和过程分成两块，对以1 &lt;= i &lt;= sqrt(n)，直接求每个f(n, i)进行累加；而对于sqrt(n) &lt; i &lt;= n，他们的n / i的取值范围为1 &#8211; sqrt(n)，也就是说，这个范围数虽然多，但是至多只有sqrt(n)种取值，于是我们改成枚举每种取值，求对应该取值的i的个数。这样两块的复杂度都是sqrt(n)，可以满足时限要求。还有一点是最后的结果会超出int范围，需要使用long long类型。<br
/> 题目因为被修改了一下，所以也有个地方没说清楚，不过应该不会误导人，只是理解起来有点费力。比赛的时候被放到了B题的位置，结果N多的队伍直接就来个直接暴力的，下次这种题目应该靠后一点放……</p><p>C Rounding or Truncation      现场赛2.12% (7/330)/同步赛7.55% (34/450)<br
/> 中等难度题，有不少的trick。主要要解决的问题就是通过一组m和p的值，来推测在两种策略下，文件总数可能的取值范围。可以解决这个的话，只要对每组m 和p对应的区间求交然后判断交是非为空即可。对于Rounding模式，p可以上下分别浮动0.5个百分点，其中往上的浮动是刚好取不到的（否则就向上进位了）。对于Truncation模式，p可以向上浮动小于1个百分点。这里还有一个问题是p等于0和等于100的时候要特别处理下，p等于0的时候，文件总数的上限是无数；p等于100的时候，因为没有向上浮动的空间了，所以对于Rounding模式，只能向下浮动，对于Truncation模式则完全不能浮动，只能是确定的100。有了p的取值范围就可以去根据m来计算文件总数的范围了，可以用double直接计算，但是处理不好很可能会有误差，推荐直接用整数处理，对p乘以10后，浮动的百分点数也就是整数了。能处理好上面的各项后，应该就能AC了。</p><p>D Elune&#8217;s Arrow      现场赛8.95% (12/134)/同步赛8.02% (11/137)<br
/> 中等偏难的几何题，不是很好想到解法。题目的模型就是用一个固定速度的圆去撞击一个朝固定方向进行匀速直线运动的圆，要选择角度从而尽可能早撞到移动的圆，输出最早撞到的时间。所谓圆撞到圆，就是圆心距离等于半径和，这里可以作一个模型转换，把逃跑的圆看成一个点，把它的半径加到追击的圆上。于是现在就是一个圆去追击一个匀速直线运动的点，依然不是很好处理。因为圆可以向所有角度发射，所以假设圆初始半径为r，速度为v，则在某个t时刻，圆可能触碰到的位置为一个半径为r+vt的圆。于是模型又可以这样转化：一个有初始半径的圆以速度v扩大半径，求何时能碰到一个直线运动的点。因为刚撞到的时候恰好是点在圆上的时候，因此可以立一个关于t的一元二次方程，最后求解方程，如果两个解都小于0则无解，否则输出最小的正解。<br
/> PS，这题也可以用其他ws的方法来解决，比如我用枚举角度+三分过了。</p><p>E Beverages for Sale      现场赛0.00% (0/2)/同步赛0.00% (0/1)<br
/> 压轴题。题目给出的是这样一个模型：有一个可分割货物的集合A和购买者的集合B，每个购买者有各自拥有的钱的数量，而每种货物也有各自的数量。其中每个购买者只会购买A的某一个子集。购买者对货物的种类不关心，只想获得最多数量的货物。购买者只会购买他感兴趣的货物中价格最便宜的那些。题目要分析出这样一个模型的稳定状态，也就是说确定各种货物的价格，使得所有货物都卖完，所有购买者的钱也都用完。<br
/> 我们可以构这样的一个图，所有货物和所有对它们感兴趣的购买者之间连边，流量为无穷（如果某一个货物或者某一个购买者没有任何边，则直接输出Impossible）。对于每个购买者，向一个汇点sink连一条边，流量为他们各自的钱数。然后从一个源点source向每一种货物连一条边，边的流量为货物的价格x。我们首先假设所有货物的价格都是一样的，我们需要二分这个价格x，使得所有的货物刚好可以全部被卖出去，也就是说确定最大的x，使得(source, A B sink)是图的一个最小割。然后考察假设这个时候的残余网络，假设在残余网络中可以到达sink的节点集合为W，设S=A-W，则集合S的所有潜在购买者（对S中任意一个货物感兴趣的购买者）都已经用完了他们的钱，如果再增加x，则会导致S的货物剩余。于是我们可以把所有集合S中的货物价格设置为x。接着，我们把集合S和S的所有潜在购买者集合从网络中去除，提高剩余货物的价格继续前面的步骤，如此循环往复，就可以把所有货物的价格确定下来的。</p><p>F Calculate With Abacus      现场赛39.59% (118/298)/同步赛60.00% (240/400)<br
/> 描述有点长的简单题。已经保证了输入的算盘都是合法的，于是只要计算出算盘所代表的数字即可。其中一种方法就是看每一列的上下部分的|位置，就可以推算出该列代表的数字。这次也没有trick，一般只要读懂题就可以写对了。</p><p>G Number Game      现场赛5.36% (11/205)/同步赛13.52% (43/318)<br
/> 中等难度题。有三个数字，每次可以去掉一个，然后加上剩下两个的和减一。问是否可以从给定的三个数得到给定的另外三个数字。可以发现，如果正着推的话，每次有三种选择，无法有效判断最终的三个数字是否可达。于是考虑逆着推，已知当前的三个数，其中最大的那个一定是新加的，而次大的那个一定是再前一次新加的，于是可以推算出被擦掉的那个数为次大数加一减最小数。这样一来，可以有唯一确定的方法递推回去。不过需要注意的是，正推的第一步，因为当前的三个数不一定满足a+b=c-1这样的等式，所以逆推的时候是无法确定被擦掉的数是多少的。所以，可以对初始的三个数枚举第一次擦掉的数为哪个，得到三种满足等式的情况。于是逆推的时候，一旦能匹配其中的一个就可以了。还有一点就是，只有当三个数满足等式才可以逆推。<br
/> 赛前JJ曾说这题可能比F还简单，结果不知道什么原因大家都不敢碰。。</p><p>H Cover the String      现场赛0.00% (0/13)/同步赛2.43% (1/41)<br
/> 中等偏难的动态规划题，需要好好优化才能把复杂度降下来。我的做法是：首先用所有的tiles构造一个trie。用s[i, j]表示原串从i到j的子串。然后考虑从后往前用tile来覆盖串，根据规则，每次放的串起始位置要在上一个之前，结束位置也要在上一个之前。dp[i] [j]表示覆盖原串从第i位开始到最后的子串，且最后一个使用的tile覆盖了s[i, j]的方法数。还有一个sum数组，sum[i]表示当前所有的覆盖中，最后一个tile开始于原串第i位或者之前，结束于第i位之后数量。<br
/> for i from n &#8211; 1 to 0<br
/> for j from i to n &#8211; 1  // 考虑覆盖s[i, j]<br
/> dp[i][j] = (number of tiles cover s[i, j]) * sum[j];<br
/> for j from n &#8211; 1 to i + 1 // 更新sum数组<br
/> sum[j - 1] += Sum(dp[i][j] .. dp[i][n - 1]);<br
/> 最后Sum(dp[0][0] .. dp[0][n - 1])就是解。其中number of tiles cover s[i, j]可以用trie在O(1)时间内得到，Sum(dp[i][j] .. dp[i][n - 1])这块可以用一个临时变量累加来优化成O(1)，因此整个dp过程复杂度为O(1000^2)。考虑到子串的长度最多为200，因此可以把j这层循环变成tile的长度，这样复杂度变成O(1000*200)，不包括前面建trie的时间。<br
/> 如果不想使用trie，可以用kmp算法来预处理，同样可以在O(1)时间得到number of tiles cover s[i, j]。</p><p>I Nine Interlinks      现场赛28.29% (116/410)/同步赛37.54% (202/538)<br
/> 简单的动态规划题，应该不难找到递归方程，就算不会动规，应该也能找到规律来求解。要把前n个变成on，首先把前n-1个变成on，然后把前n-2个变成 off，然后把第n个变成on，然后把前n-2个变成on。所以dp[1] = 1, dp[2] = 2, dp[i] = dp[i - 1] + dp[i - 2] * 2 + 1。</p></blockquote><p>其中的B题，可以不用Sqrt分成两段。下面的f(n)是对上面提到的f(n, i)累加的结果，也是对于一个n，最终要输出的答案：</p><div
class="wp_syntax"><div
class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">long</span> <span style="color: #0000ff;">long</span> f<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> n<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">long</span> <span style="color: #0000ff;">long</span> s <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> n<span style="color: #008080;">;</span> i<span style="color: #000040;">++</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">int</span> t <span style="color: #000080;">=</span> n <span style="color: #000040;">/</span> t<span style="color: #008080;">;</span>
        s <span style="color: #000040;">+</span><span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>t <span style="color: #000040;">-</span> i <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">*</span> <span style="color: #008000;">&#40;</span>n <span style="color: #000040;">/</span> i <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        i <span style="color: #000080;">=</span> t<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> s<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div></pre> ]]></content:encoded> <wfw:commentRss>http://lihdd.net/university-acm-contest-2009/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced

Served from: lihdd.net @ 2012-05-19 14:42:31 -->
