2018暑假校内集训日记

Day 1

  今天终于见到了膜拜已久的雪舞喵巨佬,一直以为他是一个高冷的人,没想到他又萌又可爱,还是个段子手!嗯……他说从某位大佬那里得知我们什么都学了(然而仍是啥也不会),于是就要讲一讲跟竞赛无关的……

  然后我们听了一上午【语言基础】。什么输入输出,文件操作,常数优化,gdb调试……不过都是一些特别迷得操作,比如scanf("%[^c]", s)就是读入一个字符串,直到'c'停止。还有什么scanf("%[a-z]", s),只读字母。

  然后还讲了交互式题目。以前只做过传统题目,这种新奇的题型还是第一次见(一直以为OI就这一种题型……),然后雪舞喵就给我们推了一道非常毒瘤的交互式题目,以至于连暴力都爆零了……

  第一天总体来说还是挺轻松的,最后说一遍,雪舞喵真有乐。

 

Day 2

   今天还讲了一些比较实用的STL,我才知道,原来我们竞赛所使用的只是c++STL中冰山一角,真正的STL的功能强大到超乎我的想象。其中最牛的当属pb_ds(平板电视)了,这东西里面还有各种平衡树,堆等写起来不是很方便的数据结构,不过只要会调用这个库,一切就解决了!正当我高兴之际,发现用里面的东西并不简单,要写9,10行代码才行,而且还不能确定这东西在OI中让不让用。

  不过还有一些东西是可以用的,比如nth_element,查找第n大的数;accumulate计算区间和;inplace_merge(, , )把两个有序的区间合并成一个有序区间。我认为这些STL多积累些并无坏处,至少还能简化代码。

  今天还算明智,中午没出去吃,否则得热死在半道上……

 

Day 3

  今天换了肖大佬来讲课。其实以前在廿四例经常能看到肖大佬,比如每天中午吃完饭的时候,都能看见他在五楼的走廊看书,无论什么时候,哪怕临近高考(就是这么牛啊)。但是一直没跟他说上话,也不知为啥。

  肖大佬讲课的风格果然和邱神大相径庭,邱神是有说有笑有唱,儿肖大佬待人温和,讲起课来慢条斯理,却又不使人犯困。平静温和的外表下透露出一股强者的气息(原谅我这小学的语文水平…………)。

  今天就讲了三道题,两道也不算是数据结构的数据结构题,和一道线段树。然而第二道题在我写这篇日记的时候还是没debug出来,实在是调不出毛病了……另外一道线段树的题思路还是蛮新奇的(或者只是我太菜,不知怎么想题?),靠着地表最【强】lsy的无限常数优化,在AC的同时,跑的还比他自己的程序快,场面一度十分尴尬。

  今天中午lba有嚷嚷着去吃米线,因为最近确实没怎么吃,而且他也嚷着好几天了,于是就决定吃米线了。然后体验到了在一家空调没起什么作用的店里吃着烫嘴的米线,喝着滚烫的汤的感觉(幸亏我没要辣的)……我们还能回到机房,已经十分不容易了……

  最后,不得不在奶一口,刘sy实在太强了!!秒题狂魔……

 

Day 4

  今天又变成了邱神讲课,也不知道他俩是怎么安排的……难道谁想来就来?

  今天鼓捣了一些图论的知识,总的来说讲的好像不是很难,然而一道题的代码都没敲过,所以心中对部分知识是否理解自然也就没什么底。在强连通图这一块感觉是听懂了个大概,而代码的细节却还是有些疑问,我觉得就是做题做少了吧,可能随着做题越来越多,突然某一天就搞懂了(让我想到我的exgcd就是这么理解的)。

  最后还讲了一下网络流,邱神讲的极为简单,而且伪代码好像也不长,然而当我看我原来的板子写代码时,就感觉网络流的细节特别多,而且我到网上翻isap时,发现代码量也不短,有的比dinic还长。费用流也讲了,主要思路懂,就是没有时间写代码,也不知道能不能写出来,而且即使写出来了,又不知道以后能不能写出来……

  感觉今天上课没什么劲头,可能是自己坚持不住了,还是知识太难了,或是旁边的人都在睡觉?好多原因吧。但是讲道理现在确实不是颓的时候,因为离noip真的不远了,况且周围还有那么多大佬,自己不努力怎么行。

 

Day 5

  今天还是邱神讲课,他昨天还问今天周末放不放假,我还以为今天换肖大佬了呢,然而仍是邱神……

  今天上午主要是讲了讲跟树有关的知识,不过遇到什么书剖,平衡树之类的就跳过了……因为邱神说那是数据结构,要由肖大佬来讲,不归他管。不过还是讲一些东西的,别以为跳过了和树有关的数据结构就没什么剩下的了……

  首先讲了LCA,我头一次听说LCA还有tarjan做法的,虽然是离线加并查集,但是复杂度竟然达到了O(n) + O(1)!不过听起来倒不是十分好办,感觉细节不少……吐个槽,为啥tarjan发明的都是和dfs有关的算法啊……总的来说,求LCA的话,还是比较喜欢用倍增,虽然是O(nlogn) + O(logn)的,但是我觉得没人会卡这个吧……

  然后讲了个树分治,而且貌似只讲了个点分治。例题就是在一棵无根树上有多少条路径满足路径权值之和 <= k。首先我们找到树的重心作为根节点,然后对于他的每一个子树进行两遍dfs。第一遍是查询,对于每个点到根节点的距离l,查询别的子树中有多少个到根节点的距离小于k - l的个数,这个可以用数据结构维护,比如开一棵权值线段树就行了。第二遍dfs是修改,将刚刚的l存到线段树中,为下一棵子树做同样的事情做准备。那为什么叫分治呢?答案在这里,进行完上述工作后,我们将根节点删去,这样一个树就变成了好多树,然后在这些树中做同样的事情,直到一棵树就剩一个点为止。

  上午还剩一些时间,于是开了dp。在邱神眼里,什么都显得很简单,于是又花了不到一小时就讲完了,然后他突然发现了我们的云课堂系统,然后就玩了起来,什么课堂小测啊,投票啊,电子举手啊,于是最后半个点我们就这样扯皮了一顿。

  下午讲了今天的最后一个知识点:插头dp。怎么说呢,虽然最终是听懂了,但是坦白了说,这个代码我是真不想写,一道入门的题都要分3 * 3 = 9种情况,而且每一种情况还得考虑周全,一个失误,那就肯定等着WA吧。听说还有36种情况的,那真像邱神所说,写代码2天,debug就不知道多少天了……看了一个25种情况的,代码轻松超200行~。但不管则么说,我觉得还是得写两道的……

posted @ 2018-10-07 14:28  mrclr  阅读(267)  评论(0编辑  收藏  举报