WC2015流水账

THU那四场考试没考好,只有20+名。这也许是我OI生涯中最后一场吧(已确认是最后一场),真是感慨万千。

day0

搬进浙大宿舍404房间(神房间号),四个人一间。中午发现学军伙食相当良心,是我参加的OI活动中最良心的

day1

徐寅展

讲了一些动态维护图的连通性以及最小生成树的算法,太深了,基本上只听懂第一个维护图的连通性的算法。下面就简单讲一下这个算法吧。

首先,这个算法是在线算法,其时间复杂度是m lg^2。离线算法可以做到m lg,用LCT维护最大生成树就行了(边权为边被删除的时间)。

大概做法是,维护\(\lg{n}\)个生成森林,满足第i个森林是第i+1个森林的子集,并且其每棵树的大小不超过\(2^i\)。然后,考虑删除一条树边,这时需要尝试寻找一条替换边来连接断开的两块。假设在第i个森林中删边,设断开的两块中较小的那块大小为k,显然\(k \leqslant 2^{i - 1}\),所以可以将其加入第i - 1个森林。我们将所有这些边降级到i - 1。由于每条边至多降级lgn次,总共至多降级mlgn次。每片森林需要用LCT维护,另外还要维护和某一块连接的所有边,故复杂度还要乘上一个lg。

吴争锴

日程表上写的是“ACM题目选讲”,没想到成了Primality Test。讲了一个神一般的AKS算法,根本听不懂。只记得这个算法的发现证明了PRIMES in P,因为它可以在多项式时间内判定素性。但是这玩意儿有什么用?朴素实现复杂度据说是\(\Omega{\lg{n}^{10}}\),加了优化似乎能够做到\(\Theta{\lg{n}^{6}}\),但还是比Miller Rabin慢到哪里去了。

还有就是,Miller Rabin似乎可以改造为确定性算法,但其依赖于黎曼猜想的正确性。

有印象的大概就这些,其他时候也许我在睡吧。

day2

俞鼎力

Tree Decomposition,乍看还以为是链剖。其实是一个神爆了的玩意儿,叫做图的“树分解”。这东西之前从来没有听说过啊,看来OI正在蓬勃发展(似乎很多OI中常用的算法都是某神犇从paper通过WC的渠道引进的)。

大概就是把一张图弄成一棵树,树上的节点对应于原图的一个集合(不一定互不相交),并且原图中的每个节点,树中仅有一个极大的非空的包含它的连通块。

定义一张图的树宽为该图的所有树分解中,最大的节点集合的大小的最小值。

对于树宽的上界为一个小常数的图,一些问题可以通过构造这样的树分解,然后用树形dp在多项式时间内高效地解决。例如最大独立集和哈密顿回路。总的来说就是,因为每个集合的大小可以看做常数,所以即使我们乱搞,复杂度也是多项式的。

另外还讲了几个近似算法。这个好理解,但是感觉也不好写,而且难说在OI中有什么用。

董宏华

我很早就听说拟阵这个东西可以用来证明贪心的正确性,因为我个人总是不太会贪心的证明,所以一直都比较想了解拟阵,但由于种种原因一直都没有学。现在终于学了,感觉还是很厉害的。

只简单说一下。由拟阵的性质(遗传性和增广性,即其中任意一个独立集都可通过增广变成某个基),容易证明求拟阵的权值最大(或最小,由于基的大小是一定的)的基的贪心算法的正确性。只需要从大到小考虑每个元素,尝试将其加入当前集合,如果加入后为独立集则加入,否则跳过就行了。

例如Kruskal算法,其实就是求图的环拟阵的权值最小的基(其中的独立集便是不成环的边集)。

day3

胡伟栋

讲计算几何,总体较简单。不过我还是有收获的。我现在知道扫描线有多强大了。

沈洋

构造题选讲。我感觉构造题都是谜一样的,一般不看题解根本不会,看了题解后往往又觉得是自己傻逼了。这堂课大概又感受了一下神构造题的威力吧。

day4

范浩强

又是randomization。前面部分讲Goldreich-Levin算法,听不懂。后面讲了交互式证明,比较好玩。不过由于讲的有用的东西过于神犇,所以这堂课也谈不上有多大收获。

陈立杰

陈老师这次的主题出人意料地正常:OI中的计数题(记得去年是函数式数据结构,而且还是英文讲义)。讲了许多值得收藏的好题。

day5上午考试,感觉精神状态还是不错的。

先看了第一题,要求k小割,感觉不好做,没思路,于是看了第二题。发现题目极长并且是fhq出的,所以直接跳到第三题(事实证明这是正确的决定)。第三题是提交答案题,要求对给出的一些逗比算法进行优化,用另一个算法得出相同的结果。这些算法都是用代码给出的,所以先要读懂它们在干什么。

我很快搞出了1,2,4,5这四个点,3是问前n项的i次方和,我想到的方法有:1.求伯努利数 2.带值求出几个点后进行多项式插值,可以用高斯消元或拉格朗日插值法 3.差分后用矩阵快速幂

我想了一会儿,感觉用第三个比较靠谱。于是就用这个搞出了3。

然后看了第一题数据范围,发现有10分暴力,中间有40分的特殊情况。对于这40分我第一感觉是拿堆搞,但是想了想感觉又不好弄。稍不注意状态就会暴涨。不过我还是想到了靠谱的做法,对每个状态只需要记最后的不是最优的位置以及它是选B还是AB都选,另外记下方案的权值就行了。然后每个状态有至多3个后继状态,选择将后面一个变成选B,或者将当前的换成后面一个,或者如果当前是B,将当前的换成选AB。能够想到这样搞从初始状态到每个选择方案的途径都是唯一的,并且每个状态的后继状态都更劣。所以拿堆搞搞就好了。有用的状态总数不超过3k。

然后所剩时间就不多了。第二题感觉是没希望把题意理解正确了,第三题看了后几个点发现有两个点可以搞点部分分出来,所以又搞了几下。

结果50 + 0 + 51。第三题中间有两个点的得分比预计的少,总共比预计少了3分。应该是爆了精度了。这个也不太好检查因为没有给checker。

听说最高分是160+,看来是要退役了。

day6

上午游西湖。下午高端论坛,然后闭幕式。

闭幕式上终于宣布了十五人名单。不出所料,我就这样退役了。

今年一等奖分数线没上70,比去年低了不少。

时间: 2024-10-14 05:07:08

WC2015流水账的相关文章

我的2015技术学习流水账

我的2015技术学习流水账 2015年马上就要过去了,匆匆忙忙地又是一年.回头总结整理,发现这一年还挺充实的.在正常上班工作之余,学习到了不少新东西,不禁感到很欣慰!一个多月前就开始写,终于赶在2016年来临之前写完了这篇文章-- 关于本文,尽管叫做流水账,但是出于程序员条理性的"强迫症",还是进行系统分类,分类方法参照Thoughtworks技术雷达的Tecniques.Languages & Frameworks.Tools.Platforms,将其中的Tecniques改

2014 Hangjs 见闻流水账第二天

前言 第一天传送门: 2014 Hangjs 见闻流水账第一天 写作风格跟第一天还是一样的. Slide 每个slide我都会根据自己的理解重新命名一次,用于表达自己的第一看法,主观意见,不喜可吐槽,但是不要喷,就算要喷请轻碰... angular 大法好 今天第一场slide是由Sofish带来的关于如何优化你的Angular Web App. 作为一名angular用户,这次slide分享的切换路由状态的监听事件,是个不错的收获,之前的loading状态都是到处定义开始-结束和标识,或者自定

记流水账

title: 2017-3-30记流水账 tags: 流水账 看清自己的位置会让你获得更轻松.自在,因为当你能正确认识自己的能力并将自己所现有的能力投入生产生活中的时候,你会很准确地预估自己将要付出点什么,同时也很容易地预测到你将会得到点什么.然而,某种程度上来讲,看不清自己的位置却会让你将来变得充满更多的不可能,正如生物进化所必须的基因突变一样,尽管绝大多数的突变基因都不会让生物变得更好,有的甚至会致命,但是假若失去了这部分产生突变的基因,有怎么会有我们人类的出现呢? 看不清自己的位置是痛苦的

2016年回顾2017年目标之流水账

本来不想写,这一年浑浑噩噩,没啥可回顾的:但想了想,还是写个流水账,至少留个念想. 在2016年中,技术上没有什么长进,计划的马拉松也没有完成(跑步这事完全断掉了),机器学习的也没有太好的进展,英语学习也没有坚持下来,数学和统计学的学习同样没有坚持下来,尝试的报名了数据挖掘的比赛,然后我报完名就没有下文了,小说也没有戒掉,很多时间都花在公众号的文章,书读了几本,但读完就都忘了--,公司业务的数据支撑需求是基本都满足了,但其实离自己本身的年初的预想差距很大.总而言之现在回想来看,真的不太满意. 2

深度强化学习Deep Reinforcement Learning 学习过程流水账

2016/10/23 这篇文章和那篇三维重建的流水账一样,用来记录一些关键资料来源和发牢骚. Python怎么学上手快,够用? 神经网络怎么上手? 强化学习怎么上手? 目标驱动,先去看用Python写的强化学习的代码,再去看一些实现各种神经网络的Python代码.再看两种融合的代码. 熟悉工作环境和工作所用工具,比如Tensorflow之类的.

2015的流水账

一.流水账 过去的2015年算是变化比较大的一年,这一年第一次踏出国门,换了第二份工作,最最重要的事情莫过于成家了.站在2016年的新起点上,回顾下这一年. 一月 一月的大事是带着老婆和双方家长见面,而后还去逛了苏州,以此揭开了这一年结婚大事的序幕. 二月 二月参加了公司的年会,外企的年会没有抽奖.没有红包.而我也没等来年终奖就跳了槽,幸运的是在现公司拿到了,当然这是后话了.二月也是过年,因为还没结婚,无奈和小慧慧还是各回各家各找各妈,这期间和爸妈一起张罗着家里的家具和装修,年倒是过得缺点味道.

我和《30天自制操作系统》——流水账

++++++谁能忍受把所有东西都写在一篇文章里面%>_<%++++++ 偶然在网络上看到这本书的一个片段,觉得文字很流畅,以为是中国人写的,后来搜索了一下——不是,是日本人写的(有点失望),不过内容却是写的很好,连我这种小白级别的也能看懂,因此就尝试着跟做一下(勇气可嘉吧),开始觉得有点吃力,后来有点豁然开朗的感觉,到后来又有新的混乱,因此暂停下来梳理一下.以此为由,写一篇小白的流水账. 关于作者:川合秀实——生于1975年,是一位以“轻量化”编程思想见长的“非主流”开发者.2000年因自行开

程序媛工作2年流水账

以前上学的时候喜欢在扣扣空间写日志,有感必发,可是后来觉得暴露了太多自己的想法,太不成熟太不理智了,于是封笔收官.昨天同事无意间的一个词"瓶颈",让我一下情绪低落了,想总结一下 这2年,也想展望规划一下未来2年,可是2年来,没写过任何总结或感想,现在文字和想法枯竭,不知道从何说起了. 哎,就从我开始实习说起吧. 女生做软件开发,好多人都不看好,可是,我就觉得我适合做开发,我喜欢做开发,也可能因为潜意识就觉得做软件开发的女生很帅,很酷.我喜欢做,就去做,做不好再说,做好了就继续做. 20

流水账

记录一下最近工作中遇到的并解决的问题: 1.复选框的checked属性 我想做个批量删除的功能,需要先勾选全选按钮,然后表格下方的所有行前面的复选框都会被选中.然后再点击一下上面的全选按钮,下面的复选框又恢复到初始状态. 实现下方的复选框的选中状态,我第一反应是用$().css("checked","checked").但是失败了.后来想到css()这个方法只能改已有的样式,并不能赋一个属性给元素. 所以,要用$().prop(),或者$().attr()来设置复选