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 ...
随机推荐
- 【Semantic Segmentation】Segmentation综述
部分转自:https://zhuanlan.zhihu.com/p/37618829 一.语义分割基本介绍 1.1 概念 语义分割(semantic segmentation) : 就是按照" ...
- apache——(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 : AH00072: make_sock: could not bind to address [::]:443
问题:命令行运行httpd.exe时报错 (OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次. : AH00072: make_sock: could not bind t ...
- JVM 内存调优 与 实际案例
堆内存设置 原理 JVM堆内存分为2块:Permanent Space 和 Heap Space. Permanent 即 持久代(Permanent Generation),主要存放的是Java类定 ...
- 实现表单checkbox获取已选择的值js代码
<input type="checkbox" name="cb" value="1" />aa <input type=& ...
- Linux 下的jdk安装
Linux 下安装JDK1.8 https://www.cnblogs.com/xuliangxing/p/7066913.html http://www.oracle.com/technetwork ...
- Android开发-网络通信2
调试了三种通信方法:HttpClient.AsyncHttpClient 和 Volley . HttpClient 测试代码[1]: public class HttpUtil { public s ...
- ovn-architecture
本文翻译自ovs官方手册,有删减 OVN架构 OVN(即Open Virtual Network)是一款支持虚拟网络抽象的软件系统.OVN在OVS现有功能的基础上原生支持虚拟网络抽象,例如虚拟L2,L ...
- nginx页面不能正常访问排除方法
nginx页面不能访问 nginx页面不能访问 检查服务端服务是否启动成功 在服务端使用wget和curl测试下返回的是否正常 浏览器wget或者curl等软件访问不了Ngixn页面 1. 检查服务端 ...
- Java BigInteger 与C# BigInteger之间的问题
最近接到一个Java代码转C#代码的项目.本来就两个函数看起来很简单的,后来折腾了一天,终于完美收官. 碰到的第一个问题是:java的BigInteger构造函数里面BigInteger(string ...
- cordova安卓sdk
Android SDK在线更新镜像服务器来下载安装: 1.北京化工大学镜像服务器地址: IPv4: ubuntu.buct.edu.cn/ 端口:80 IPv4: ubuntu.buct.cn/ 端口 ...