2011阿里巴巴程序设计公开赛 总结2011-08-18 16:58 | (分类:默认分类)

暑假开始,lcy老师叫我准备出套题,我盘算着在退役之前来场华丽的专场,想也没想就答应了
不过一个人出题压力真大啊....难易程度,各种题型,都要把握好.关键是还没有基友可以一起验题..
idea是早就想好了几道,但是题是等到Astar回来之后才开始出的...10天之内搞定一场比赛...那几天我整个人都思密达掉了
由于个人喜欢玩游戏,所以出了场以游戏为背景的游戏专场..希望各位玩的开心
还好在比赛前夕赶出来,由于人手不是很多,比赛的时候还是出现了一点小瑕疵,不够圆满不够华丽啊..

以下是比赛的日记

00:02:50 [gao]庄俊元 姜凯 范雨喆 第一个提交,并且拿到first blood,3分钟不到时间,这简直就是一个奇迹!
00:03:00 有人开始用java的A-B交1003...掉进了我的陷阱...题目就说I'll play a trick on you嘛
00:05:10 [TakeItEasy]仲立华 李非凡 吴建华 拿到了1003的FB,仰慕
00:12:05 [Turnip]王安刚 曹博晓 拿下了1009的first blood,至此,设置的三道给FB的题目被A光了
00:12:05 [bupt1]戴振阳 章明星 何川 同时拿下1009的FB...好巧

00:16:37 [xenocide]杨忠程 拿下1002的FB,至此,简单题被A光

截止比赛开始三十分钟,收到22份email反馈1003问我要100RMB的...不好意思,都不在我给RMB的范围之内

00:41:39 [u_u]何钊 林添 熊南君 A光了四道简单题,进入中等题环节
00:58:00 [bupt1]戴振阳 章明星 何川 竟然在一个小时之内A掉了那道dancing links.Orz

好悲剧,看了他的程序后发现是错误的代码,由于测题时候数据范围改小了,数据变弱被水过了.急忙加数据,但是比赛时候修改有失公平,只能赛后再修改了

01:27:52 [latsyrc]刘宸亨 刘家辉 谭瑞阳 以和标称一样的方法AC了1004
01:36:41 [WhyWhy]洪金艺 叶灵 吴王宇 直接奔中等题,成功抢下FB

由于被误导,大家选题的方向可能搞错了,都去看1007...1005明显是很裸的广搜啊(我定义为中等偏简单的)..现在已经4题的队伍已经陷入没题做的状态了

03:02:10 [BIT-Bear]范敬凡 杨晓萌 蒋一泽 过了1010,网络流,正解啊~~稍稍打破的僵局
03:22:01 [HZXJHS]高欣 李超 莫成娴 用随机算法搞定了1007,仰慕
03:33:30 [LeGenDN]叶寥亮 陈凯伦 喻展 用纯dfs加剪枝过了1007,仰慕
03:39:43 [LeGenDN]叶寥亮 陈凯伦 喻展 终于达到了7题.
04:06:31 [latsyrc]刘宸亨 刘家辉 谭瑞阳 神一般的过了超级模拟题三国杀...这刘氏双兄弟我在百度的时候就觉得他们特别帅
04:06:54 [HDU02]张勇威 周尧 白欣 终于有人用和标称一样的方法过了1007,我泪牛满面啊..
04:26:42 [latsyrc]刘宸亨 刘家辉 谭瑞阳 八题,太霸气了
04:28:01 [latsyrc]刘宸亨 刘家辉 谭瑞阳 奇迹啊奇迹...设计最难的两道压轴题都被广东帅小伙轻松搞定..整场比赛已经提前决出冠军,剩下的问题就是能不能AK了..
05:00:00 比赛圆满结束

截止比赛结束,共受到60多封邮件反馈1003信息,有些比较靠谱,也是我出题的疏忽,我会挑选第一个靠谱的邮件给予小安慰^_^

正常比赛除了1007数据水了,真正做出来的其实只有5个左右.其他方面还是蛮不错的..

所有题都有人A,冠军不AK这两项基本原则在[latsyrc]刘宸亨 刘家辉 谭瑞阳的努力下做到了

以下是解题报告

1001 Coin Game

类型:博弈/想法题(简单)

假设我们有10枚硬币,K=2,第一个玩家拿走一枚之后,第二个玩家在圆的对称点拿走相应的,保持剩下的两边硬币相等,这样不管第一个玩家怎么取,第二个玩家只要在另一边一样的取法就能保证自己是最后一个取硬币的.也可以根据SG定理知道,SG值一样的两个游戏为必败状态.

推广到更大的情况也一样,所以第一个玩家胜利的情况只可能是N为奇数且K为1,或者K>=N,

其他情况均第二个玩家胜.

当然你也可以用sg定理去推出初始状态的必胜必败情况,从而得到规律.不过比较费时间且没有上述推论直观.

1002 Fruit Ninja

类型:几何(简单)

假设有一条线穿过一些水果,那么我们将这条线平移,使之与一水果的一个点相交,然后按这个点进行旋转,又可以使之与另一水果的一个点相交.这次这条线还是穿过这些水果.

所以,我们可以枚举两两水果的点做直线,然后计算该线穿过水果的个数

数据规模很小,随意随便搞.复杂度O(n^3*k^3).

1003 I'll play a trick on you

类型:非主流(简单)

呵呵,本题的名字就是我会和你开个小玩笑.

第一眼看到这题,很容易得到99-72=27这样的结论,并且?=15的时候,36-21=15和28-15=13都是成立的,估计会有很多人看到此处就会提交A-B,而且范围里给了1<=B<=A<= 10100 ,很容易让人用大数提交.

但是,最后一个7却不符合21-13=7的规律,所以....提交A-B是AC不了的.

其实真相就是9+9+7+2=27,4+5+2+7=18....而?=12. 6组数据全部说的通

只需要把所有数字加加起来就好了.

其实A和B数据范围这么大已经给了很大提示了,就禁止大家往很复杂的方面想,什么素数啊什么的.

作为非主流题,如果有人能算出?并且和给出和官方不一样的解释,那就悲剧了,所以Hint里加了句如果能有更牛逼的解法但AC不了,我本人给以小安慰一下

1004 Level up

类型:数据结构-线段树(中等)

题意很简单,成段更新,成段询问,但是更新却和一般的线段树大不一样,每个点虽然接收到相同的信息,但是由于本身不同,最终得到的值也是不同的.用一般的延迟操作就搞不定了.

突破点在K,范围很小,只有10,可以考虑每次有人升级的时候,就递归的找下去,将这个人进行升级操作.由于找到某个人只需要logn的复杂度,每个人最多升k次,所以n个人的复杂度是O(nklogn)

用了两个辅助数组add[maxn]和MAX[maxk][maxn],add用于记录延迟标记,MAX[k]表示该区间等级为k的最大经验值.初始化add,MAX[1]为0,其他为-1,表示无人在这个等级.当MAX[k]的值大于等于Needk时,就对这个区间进行升级操作,和线段树操作一样递归的将这个区间能升级的人全部升级.

单次操作可能会是nlogn(每个人都升级),但是平均下来还是只有nklogn.

1005 March

类型:搜索(中等偏简单)

理解题意搞清楚优先级后,然后简单的搜过去就好.提几个注意点:

1.奇数行和偶数行的6个方向行走坐标变化是不一样的.

2.就算你当前只剩0.25MPs,你也可以走任意一格,这样会你消耗光你这回合剩下的MPs

3.敌人优先级最高.在ZOCs间走消耗所有MPs

4.然后是路

5.然后是河流

6.最后才考虑前进格子的地形

7.为了避免不必要的错误,数据已经保证了这边有河流,对应的那格也有河流

1006 SanguoSHA

类型:模拟+状态DP(难)

如果没玩过三国杀的话这题简直做这题就是天方夜谭了,就像国外那种巨长模拟题一样,规则巨复杂,不过我给没玩过三国杀的人看过题目,还是能看明白的,就是累了点.

1-3主要是介绍三国杀的一般规则,玩过的童鞋扫一遍就ok了,4和5才是题目重点,标记规则和攻击规则,需要仔细阅读

dp的状态是[round:80][state_nj:5][state_all:3^6];

round表示回合数,8个人*10论

state_nj:表示内奸状态,0:未知身份,1:被认为忠臣,2:被认为反贼,3:被认为内奸,4:死

State_all:表示除主公内奸的其他角色状态,0未知身份,1身份被标记,2死亡

(由于大家都按常规出牌,反贼和忠诚不会被标记成其他角色)

然后就是安步就班的模拟下去.

建议写个函数,标注a攻击b之后状态的变化情况,然后无论谁攻击谁都调用这个函数就简单方便很多

这种模拟题还是多分成小块来写的好,容易差错

标称写了16个函数

1007 Street Fighter

类型:dancing links(中等)

很直观的最小支配集问题,用dancing links的重复覆盖很好解决.

但是由于每个角色只能选一次,即一个角色只能选一个模式.所以这又是精确覆盖.

一共有sigma(Mi)+N列,sigma(Mi)列在搜索时需要重复覆盖,另外的N列表示角色的选择,需要精确覆盖.最后只要判断覆盖了sigma(Mi)列就ok了.

需要再模板上改好一些内容,任何一小点都很容易导致死循环.

1008 Tower Defence

类型:插头DP(难)

题目要求放W使得路线最长,我们反过来理解,就可以找一条最长的路(边不重合),然后在这路的边上放满W就ok了.(或者其他所有的格子都放W)

为了保证这条路径边不重合,我们不仅需要记录轮廓线上方的插头状态,还需要记录上方的路的状态.比如:如果当前格上方有路,但是上方没有插头,这样这格就不能建任何路了,因为在这格建的路不能和上方的路连起来,必然导致边的重合.

由于S和T都不固定,需要有独立插头,括号表示法的话会比较难写.建议用最小表示法来标记插头

1009 Board Game Dice

类型:数学(简单)

就是等比公式化简一下.高中数学.概率学的好的童鞋应该一眼就能看出答案.

最后的答案是Mx*x/N.

1010 World of Warcraft

类型:NP(无解)

我错了,大家原谅........T_T

以下是原来错误的方法

出题的时候很怕这题被按结束时间优先的方式贪心过去,但是贪心没办法处理开始时间和结束
时间都相同的指令的安排,我特地造了几组数据卡这种贪心.不知道实际比赛中有木有大神能
用更犀利的贪心贪过去.
正解是网络流,建一个包含源汇六层的模型.
第一层:源点(1)
第二层:指令(100)
第三层:快捷键按时间拆点(104*100)
第四层:按键按时间拆点(29*100)
第五层:按时间拆点(没有实际意义,只是控制每秒只能按K 个键)(100)
第六层:汇点(1)
共计13502 个点
这六层分析出来了相信建图就不用我多说了吧?

但是.....第三层到第四层没办法保证同时按键...所以,悲剧了...最简单的反例就是

1 1

1 2 1 Alt + A

引以为戒引以为戒

恭喜

[latsyrc]刘宸亨 刘家辉 谭瑞阳  拿到了冠军

[bnuteam09]龚治 易超 马飞龙 拿到了亚军

[u_u]何钊 林添 熊南君拿到季军

[HZXJHS]高欣 李超 莫成娴  拿到殿军

[gao]庄俊元 姜凯 范雨喆 拿下1001FB

[xenocide]杨忠程 拿下1002FB

[TakeItEasy]仲立华 李非凡 吴建华拿下1003FB

[latsyrc]刘宸亨 刘家辉 谭瑞阳 拿下1004FB

[WhyWhy]洪金艺 叶灵 吴王宇 拿下1005FB

[latsyrc]刘宸亨 刘家辉 谭瑞阳 拿下1006FB

[bupt1]戴振阳 章明星 何川 拿下1007FB

[latsyrc]刘宸亨 刘家辉 谭瑞阳 拿下1008FB

[Turnip]王安刚 曹博晓 和 [bupt1]戴振阳 章明星 何川同时拿下1009FB

[BIT-Bear]范敬凡 杨晓萌 蒋一泽 拿下1010FB

最后.要感谢pkkj对的题目的诸多修改及验题
感谢Lost,和他共度一个良宵写出了SanguoSHA这神一般的描述
感谢陈锐对我题目描述的最后审查
以及小丽和甘露对题目的改进
还有lcy老师给我的支持与信任.Astar回来后我还没开些写题他都一直没催过我
....

发布解题报告后iSea神提出了1010的质疑,然后..然后我发现我错了,用流是无法流过去的...悲剧...非常的抱歉,最后一道题晚节不保,自己大意,没能找人验题...

不算最后一题的话...[latsyrc]刘宸亨 刘家辉 谭瑞阳成功AK

2011阿里巴巴程序设计公开赛 总结(by胡浩)相关推荐

  1. 2011阿里巴巴程序设计公开赛 / 1002 Fruit Ninja

    某神的代码: #include<stdio.h> #define max(x,y) (x)>(y)?(x):(y) #define min(x,y) (x)<(y)?(x):( ...

  2. 2011 阿里巴巴程序公开赛

    2011阿里巴巴程序设计公开赛 总结来源: 胡浩的日志 暑假开始,lcy老师叫我准备出套题,我盘算着在退役之前来场华丽的专场,想也没想就答应了 不过一个人出题压力真大啊....难易程度,各种题型,都要 ...

  3. 【Azure Show】|第三期 人工智能大咖与您分享!嘉宾陈海平胡浩陈堰平

    欢迎来到Azure Show! Azure Show Hello,大家好,又来到新的一期的Azure Show!本期是人工智能专场,我们邀请到微软Data&AI的解决方案架构师陈堰平,Tens ...

  4. 胡浩:人人能学的AI《从零开始机器学习》苏州.NET俱乐部课程分享

    [课程名称] <从零开始机器学XI> [老师介绍] 胡浩,微软最有价值专家(MVP,十余届多方向),微软技术大会讲师.云.数据中心基础架构.全栈虚拟化.企业移动管理等领域的架构师及顾问.A ...

  5. 中国大学MOOC胡浩基的机器学习第二章(支持向量机)兵王问题python版本——在python上初步使用libsvm

    在中国大学MOOC上看了胡浩基的机器学习课程,完全面向入门人群感觉挺好.其中有关原理的部分讲的很细.(虽然有几个细节我还是没懂.......)其中在第二章的例题兵王问题中课程只给了MATLAB的版本. ...

  6. C语言程序设计第五版谭浩强课后答案 第九章习题答案

    C语言程序设计第五版谭浩强第九章答案 1.定义一个结构体变量(包括年.月.日).计算该日在本年中是第几天,注意闰年问题. 2.写一个函数days,实现第1 题的计算.由主函数将年.月.日传递给days ...

  7. C语言程序设计第五版谭浩强 第七章答案

    C语言程序设计第五版谭浩强著 第七章答案 第七章 用函数实现模块化程序设计 1.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果.两个整数由键盘输人. 题目解析: ...

  8. 这是我的故事 —— 胡浩

    作者:胡浩 校对/文章优化:刘轶民 视频地址:https://www.bilibili.com/video/BV185411J7mW 前言 先简单做一个自我介绍,我叫胡浩.虽然偶尔写简单的代码,但坦白 ...

  9. c语言程序设计胡成松,C语言程序设计教学课件 作者 胡成松 黄玉兰 李文红 课后习题解答 习题答案 4选择结构程序设计 .docx...

    C语言程序设计教学课件 作者 胡成松 黄玉兰 李文红 课后习题解答 习题答案 4选择结构程序设计 .docx (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方 ...

最新文章

  1. Bootstrap响应式布局以及栅格框架
  2. 序列化的高阶认识-serialVersionUID的作用
  3. 新加坡樟宜机场将进入“刷脸”时代 自助通关是亮点
  4. php react-native,React-Native+Mobx实现商城APP
  5. Microblogging Freedom
  6. Kafka、RabbitMQ、RocketMQ等消息中间件的介绍和对比
  7. 影院要求自费购买3D眼镜是“霸王条款” 官方都开始吐槽了!
  8. python中使用函数的目的是什么_Python代码中os.mknod()函数起什么作用呢?
  9. matlab排课方案,求助matlab大神,学校的课程安排太骚了,我们压根就不用学matlab...
  10. matlab迭代法求某数平方根,MATLAB平方根法和改进平方根法求解线性方程组例题与程序要点.doc...
  11. 物料编码是计算机识别和检索物料的( ),物料编码是计算机识别和检索物料的
  12. WordPress伪原创工具-更新网站一键伪原创发布软件
  13. 不等式计算机在线使用,不等式传递性在线计算器
  14. 如何用python制作3d游戏_【教程】12个步骤让你快速学会制作3D游戏
  15. 圆圆的球像什么_圆圆的月亮像什么-圆圆的月亮比喻句
  16. 一个ios开发者使用Android手机后的一些感想
  17. windows 10---MySQL 8.0的安装教程
  18. Linux命令:lp
  19. 一个SQL获取某股票连续上涨的天数
  20. Python配置新环境时,复制已经安装好虚拟环境的三种方法

热门文章

  1. 哪些产品需要做FCC认证,带电无线产品是否都需要做FCC
  2. 吾尝终日而思矣——2019.02.27
  3. 建设智慧城市,需要从哪几方面考虑?
  4. 电商数据采集要怎么保证准确率
  5. css文件内容格式化
  6. 机器视觉算法与应用:1. 简介
  7. 临床预测模型评鉴(PMID: 31865340)
  8. 频谱仪 RBW与VBW的区别
  9. 【NOIP 2016 提高组】†换教室
  10. VNote v2.7.1 绿色版下载