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 ...
随机推荐
- [postgresql]ROWS is not applicable when function does not return a set问题解决
需要把程序结尾的ROWS 1000去掉,提示如果函数不是返回一个数据集的情况下ROWS是不适用的: CREATE OR REPLACE FUNCTION public.function( eigyou ...
- 运行UART的程序
1 捎程序的时候,注意,捎入的是norflash,此时的按钮应该在norFlash.2 当捎入成功的时候,开始运行程序时,应该把按钮按回nandflash,因为程序的启动就是在nandflash,他把 ...
- idea 2018注册码
原文:https://blog.csdn.net/zhw0596/article/details/81394870 (最新的看后面!!! 转载的请附上原文链接 搜索不易!)百度的,上一个没用 ...
- SQL , MERGE 简意
- 聊一聊Spring AOP
前两天,在给新入职的同事做技术介绍时,讲到spring的AOP.使我又一次认识到,对于AOP,特别是spring AOP的理解,虽然大家都能说上来几句,但是许多人认识并不太全面,甚至可以说是一知半解- ...
- 奔跑吧ansible笔记一(概述)
1.普通用户想使用sudo到root用户下执行一些有root权限的操作需要在被管理机器上做如下操作 1.切换到root用户下,怎么切换就不用说了吧,不会的自己百度去. 2.添加sudo文件的写权限,命 ...
- Qt:表格 tableWidget
1.设置行数和列数 //设置行数 tableWidget->setRowCount(); //设置列数 tableWidget->setColumnCount(); 2.隐藏表头 tabl ...
- centos7 iptables替换firewall
Disable Firewalld Service. [root@rhel-centos7-tejas-barot-linux ~]# systemctl mask firewalld Stop Fi ...
- C#中Abstract和Virtua笔记,知识
在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在来讨论一下二者的区别.二者都牵涉到在派生类中与override的配合使用. 一.Virtual方法(虚方法) virtual ...
- Linux安装apue.3e(基于ubuntu16.0.4)
本菜刚刚学习UNIX高级编程,无奈搭建本书编程环境时遇到不少问题,参考了网上各路大神的解决办法,最终解决了问题. (1)下载源代码,可以去官网下载:http://apuebook.com/code3e ...