ACM 五一杭电赛码"BestCoder"杯中国大学生程序设计冠军赛小记
对于这项曾经热爱的竞赛,不得不说这是我最后一年参加ACM比赛了,所以要珍惜每一次比赛的机会。
五一去杭电参加了赛码"BestCoder"杯中国大学生程序设计冠军赛,去的队伍包括了今年19支World final的队伍,几乎是全国最强的46所学校各出了一个代表队,十分感谢学校给了我这个大三的老年血手这次去比赛的机会。
比赛在5.2一天内完成,上午的热身赛居然是上一场Bestcoder的原题= =。虽然我们三个人都没做过。。。不过我还是水水的写了前两道题。
在中午的悲惨淋雨后,下午正赛开始了。
A题是一道板刷题,不过相对来说其实想法还是很有意思的,不过并不是很难想。
题目大意是:两个数列
是否存在3组L,R的区间互不重叠,若R<L可互换这组L和R。
这道题我们大概想了15min,最后是在队友画了一张图之后瞬间明朗的,其实我们只要找到区间右端最靠左的区间和区间左端最靠右的区间然后对于每个区间check是否在这两个区间之中就可以了,于是我大概在30min开始写,并在40min1Y。
J题也是一道板刷题,而且可能比A题更简单想,所以队友又给我讲了J题,然后我继续写不过我的程序出了个低级的小bug,= =。某些测试数据没完全读完就输出了,这让我们WA了一次,还找了大概10多分钟错误,真是打脸。不过最后还是在1h21min时候2Y了。
这个时候榜上有人做的只剩下E题了,不过我们看了一遍之后思路却比较少,E是一个类似于约瑟夫问题的问题,区别在于每次可以走任意步(一个可走步数的集合),问有可能能赢的是哪些人。当时想了很多的方法,包括动态规划,但是每次淘汰一人使得我们想的动态规划都很难搞。这题大概想了将近1个小时,还是没想到标准算法。
之后我我又想了I题,如何在一个可能有重边,双向边,单向边的图里找到一个环(其中单向边或者双向边走过一次后都会被销毁),因为边数(n)点数(m)都是1000000所以还是很容易让人想到这就是个暴力dfs,不过关键在于图如何建。一开始我想的是对于一个之后单向边的图来说,我们能够在O(m)时间内很容易的找到一个环,不过添加了双向边就会产生一些问题,所以我想通过拆点把双向边建成单向边,不过想了好久还是没建对(也许是对于E题耿耿于怀),之后又转回想E。整个过程大概经历了1个半小时左右,期间整个队伍都昏昏欲睡的。
不过在3小时的时候队友突然提出了一个很好的动态规划的方法,令F[i,j]代表剩下i个人时,若BrotherK的位置是1,那么位置为j的人是否可能获胜转移的时候可以枚举当前轮指定的数是什么,那么就可以计算出当前位置j的人在剩下i − 1个人时的位置(假设BrotherK所处的位置是1),然后利用之前计算出的F值判定此人是否可能获胜,时间复杂度为O(n^3)。我终于明白我们为什么前面想不出来了,原因就是我们没有假设固定每次dp位置都是从1开始,这是一个非常好的想法,一下子豁然开朗啊~
在3h23min的时候队友E题1A了。
而且在他拍代码的时候,我感觉我也豁然开朗,发现I题其实只要把双向边并查集缩点,之后不就是一个单向图找环的dfs了吗?
而对于在一个并查集内形成环的情况只有两种,一种是全是双向边形成的环,这个情况下只需要通过并查集时候判断,这两个点是否已经在一个集合里了就可以判断。另外一种是存在一条单向边把并查集里的点连接起来,这也只需要通过一遍遍历所有的单向边来判断就可以了。所以这道题也就轻松愉快的解决了。
不过最后我们还是WA了6次,原因是扩大了栈空间后,居然并查集还是爆栈,我们最后做了个死,强行用评测机来调试到底是哪一段程序爆栈了,发现居然是并查集已经是哭笑不得了,最后居然还写了个非递归并查集。。。然后在4h27min I题7A了。
最后我们只以四题收场,拿了第32名,离我们定的金牌目标还是有一段距离的,个人来看想在区域赛这套题6题保金5题有希望(毕竟好多final队都是5题)。
最后看看题解觉得其实B,C,D都有可能能做得出来,不过就是我们对题的想法还是少了点,而且很难保持五个小时的专注度,这些也是我们之后需要训练的。
最后附上一张比赛照片,顺便玩了下MS的人脸识别检测年龄,ljl学姐的性别居然暴露了,哈哈~
5.3 在西湖边逛了一大圈,"那杭州美景盖世无双 西湖岸奇花异草四季清香” 哈哈哈~晚上吃的新白鹿餐厅的杭帮菜也是相当不错。
ACM 五一杭电赛码"BestCoder"杯中国大学生程序设计冠军赛小记的更多相关文章
- 个人训练记录-赛码"bestcoder"杯中国大学生程序设计冠军赛
A.Movie 题意是给n个线段,要求求出是否存在三个不相交的线段,是的话输出yes,否则输出no.根据贪心的想法,可以先找出右端点r'最小的线段,他是三条线段中最左的那条,再找出左端点l'最大的线段 ...
- HDU 5215 BestCoder"杯中国大学生程序设计冠军赛” 边双连通分量取出子图+二分染色判图内奇偶环
Cycle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Sub ...
- 高手看了,感觉惨不忍睹——关于“【ACM】杭电ACM题一直WA求高手看看代码”
按 被中科大软件学院二年级研究生 HCOONa 骂为“误人子弟”之后(见:<中科大的那位,敢更不要脸点么?> ),继续“误人子弟”. 问题: 题目:(感谢 王爱学志 网友对题目给出的翻译) ...
- acm入门 杭电1001题 有关溢出的考虑
最近在尝试做acm试题,刚刚是1001题就把我困住了,这是题目: Problem Description In this problem, your task is to calculate SUM( ...
- 杭电ACM2000--ASCII码排序
ASCII码排序 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- 杭电2000----ASCII码排序
#include<stdio.h> int main() { ]; int i,j,t; while(gets(a)!=NULL) { ; i<; ++i) ; j<-i; + ...
- 【ACM】杭电ACM题一直WA求高手看看代码
数据测试了好几个都没问题,可以就是WA不让过,检测了2个小时还是没发现有什么问题T_T!!求高手看看代码,小弟在此谢谢各位哦! #include <stdio.h> #include &l ...
- ACM组队安排-——杭电校赛(递推)
#include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> #in ...
- 杭电ACM分类
杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...
随机推荐
- 5.scala中的对象
排版乱?请移步原文获得更好的阅读体验 1.单例对象 scala中没有静态类或者静态方法,都是通过object实现的,它表示某个类的单例对象.如object People是class People的单例 ...
- 【Semantic Segmentation】 Instance-sensitive Fully Convolutional Networks论文解析(转)
这篇文章比较简单,但还是不想写overview,转自: https://blog.csdn.net/zimenglan_sysu/article/details/52451098 另外,读这篇pape ...
- [小问题笔记(十)] SQL Server 里 float 转 varchar等字符类型 不使用科学计数法
需要转换两次, 试了一下 float 转 bigint 转 varchar 溢出了... 后来用 float 转 decimal(38,0) 转 varchar 就成功了~ ,)) )) 另吐槽一下 ...
- asp.net core + log4net+exceptionles+DI
参考了ABP的代码,我也用依赖注入的原则,设计了日志模块. 与abp不同之处在于:1)DI容器使用的是.net core自带的注入容器,2)集成了excetpionless日志模块,3)不依赖于abp ...
- Asp.net WebApi 配置 Swagger UI
首先安装Swashbuckle.Core 然后添加swagger配置文件. [assembly: PreApplicationStartMethod(typeof(SwaggerConfig), &q ...
- PHPCMSV9的CKEDITOR编辑器增加行距
lineheight插件,下载地址:http://files.cnblogs.com/ysfng/ckeditor-lineheight.zip 第一步,下载lineheight插件,并解压到\cke ...
- zDialog弹出层插件
效果图如下: 提取自ZCMS的弹出框: 代替window.open.window.alert.window.confirm:提供良好的用户体验: 水晶质感,设计细腻,外观漂亮: 兼容ie6/7/8.f ...
- Oracle登录被拒绝; 权限不足或用户名/口令无效
第一步: 打开CMD命令窗,输入如下命令:sqlplus "/as sysdba",回车 第二步: 输入命令:alter user sys identified by Orcl12 ...
- 4666 Hyperspace stl
当时自己做的时候没有这么想,想的是每个象限去找一个无穷值来作为比较点.但是很麻烦 代码: #include <stdio.h> #include <string.h> #inc ...
- json 解析double类型多出几位小数,利用NSDecimalNumber修复 , 服务器返回的数据,用数据类型接收(int,NSNumber)?
后台返回float类型数据8.2,实际用AFN的json解析后得到8.1999999999,该怎么处理呢? 开发中处理处理价格金额问题, 后台经常返回float.double类型, 打印或转成NSS ...