暑假集训总结

总结这一个暑假呐,就是被DP虐哭了的一个月,这TM就是一门玄学,没有一定的脑洞,怎么可能学好DP,用抽象的思维将一个大问题拆分成多个阶段决策问题,然后表示每个阶段的状态,再在每个状态之间进行决策的选择。题做多了之后才发现,DP的过程其实就是将状态你前面记录的过程记忆下来,然后后面你进行决策的时候以这个决策为依据进行决策。

初来的那几天

7.21就来学校,一个月的期末复习把以前学的知识忘了不少,来的几天先把以前的题做了一遍,把以前的知识点捡起来,以前做的急没来得及消化,现在又有了很多很深刻理解。话说有时候不静下心来做一件事,效率真的是差的,比如说以前做背包的时候,三种背包说白了就是照着三种背包的模板套模板来解题,碰到稍微变形的题就不会做了,这几天把背包重新看了一遍,还把背包九讲看了一遍,不禁还很多感慨,一是以前理解的真是太浅了,只知道背包要那么写,但是并不知道为什么这么写,这几天有时间静下心来写这个,明白了很多以前不明白的地方,比如01背包和完全背包为什么一个从后往前更新状态,一个从前往后更新状态,从后往前更新状态,每次得到的结果都不会覆盖之前得到的状态这样刚好满足

每个物品都取一遍的要求,而完全背包从前往后更新状态每次得到的结果都会覆盖之前的状态这样就满足每个物品可以取无数次的要求,唉,要是自己肯定想不出来这么好的方法来写这段代码,真是厉害啊。

状态压缩DP

之后就是开始了做状压DP,因为前几天就把状压看了一点,所以理解起来没那么费劲。但是最初的几天就没有这么幸运了,根本不知道状压DP是什么东西,看着邝斌的博客就跟天书一样,幸亏还有点字,本来想知道知道状压DP 的概念就去找相关的课件但是描述的太简略了,幸亏有三个好学长,每天晚上去东校宿舍的路上,我当然不能放过这么好的机会,学长们都是理解了很透彻了,用很通俗的语言给我解释了什么是状态压缩,真的需要高人指点的,这一下就好像是打开了新世界的大门,豁然开朗了。

要点就是用位运算来写状态转移方程,这个地方也是一个难点,以后DP理解都好理解但是状态转移方程就是不好想,比如取状态的时候不是以前那样用循环中的i当作状态,而是将状态压缩之后,用位运算取出每一个你需要的状态,刚开始的几天对位运算还是还不是很了解,虽然想出来状态方程了,但是状态压缩之后的你想要取一个状态没有位运算就很费劲,为此我特意看了两天的位运算,刚开始的时候看的很粗略,到后来才发现光知道他的本质作用是远远不够的,更重要的是知道他是抽象作用是什么,比如用n&1来判断是否为整数,还有用|以及&来取一个压缩状态中的一个取还是不取,对位运算熟练之后,就好多了,刚开始的题都是比较基础的裸的DP题,状态方程很好想,所以真的明白了之后做题就顺利多点了,就是想状态方程的过程比较难办。但是最重要的是看题解的时候坚决不做题,做题的时候坚决不看题解。

数位DP

我感觉数位DP 在这几大类DP中算是最好理解的一类了,就是简单的用dfs类枚举你需要条件的位数,幸亏当初学搜索的时候真的理解了,这里就不是很费劲了,很多抽象的枚举位数。

训练赛小插曲

每个星期二四的训练赛是重头戏,从最开始的只能A一题,到后来的三四题,我觉得这真的是一种成长,从一开始就坚决不看题解,虽然很多次都排在最后,但是这就是一种成长,去掉以前那种离开答案就做不了题的臭毛病,特别是上大学之后,除了搞ACM根本没有动脑的机会,就连考试都只需要背的答案多就行了,这是一种坏习惯,剥夺学生思考的机会,所以说平时多动脑是有好处的,这个改变在大一改变特别明显,大一上学期的时候遇到问题在总是不会选择先动脑,总是先看答案在做题所以成绩都没有什么起色,到了下学期,真的感觉自己学东西都特别快,相比以前,就拿高数来说,平时没怎么学(虽然这是个不好的习惯),但是最后的几天认真的静下心来做了很多题,最后成绩出来之后当然是理想的,比平时好学很好的同学考的还高。

树形DP

重头戏来了,对没错就是树DP,真正的玄学,到现在都不是很明白,但是基本的套路基本明白了,都是建树然后在树上进行DP,因为中间有些事耽误了,所以进展有点慢,到后来,都是在追别人,说起来建树那真的是***(脏字自动省略)还不止一种建树的方法,还没学数据结构真的有点麻烦,幸苦原来学过最短路的建树,现在知道建树的原理了,最初的几天!你知道什么是绝望么!一天就看一个题的建树是什么原理!还没看懂!真的是很***

最重要的是树形DP还有小分类,以前的DP内容都包括在内,在树上进行DP 也是用dfs进行遍历的,真的不是很舒服,因为调的时候很麻烦,输出中间过程这不现实,递归这东西你只需要知道他是怎么跑的就行了,千万别想看看显示的数据是什么,因为这个输入真的太***麻烦了,还有就是在树上进行背包等等,虽然很难,但是很有意思,当你真的明白的时候就很舒服了,就像一个学成归来的少年,到处想找人比试,当你学会一个知识点的时候就是这种心态,想到处找题做做,当你真的做出来一个题的时候那种满足感比拿五杀还刺激,还舒服。

日常篇

暑假的集训条件确实挺艰苦的,但是丝毫阻止不了我们,每天都保持这一个好的作息习惯,早上六点多起床,八点多到实验室,然后就开始一上午的训练,中午出去吃点饭,中午睡个觉,下午在学,五点多去吃饭,吃过饭的时候,回来看一会新闻就开始晚上的学习了,九点半左右就开始往东校走,到了基本上就十点了,洗洗衣服,洗漱一下就躺在床上,和别人扯会蛋,十一点多就睡了,然后第二天照常,每个星期的训练赛都会很兴奋,很刺激,有种未知的感觉,每一次提交都不知道会不会过,当然也有崩溃的时候,被一个水题卡好几个小时的时候,一个题T无数次的时候,但是始终一个原则不能看题解,星期天当然最海皮的时候了,开车!606车队开车,呐喊声!太爽了,一块开车玩游戏,一块喷别人。

总结

人生有多少次能给自己时间用来专心学东西的,很少特别是有这么多志同道合的人一起,不容易,朝夕相处比和亲人呆在一起的时间还要长,若干年之后回忆起来肯定是内心很宝贵的一段回忆。

学习习惯

我觉得还是刚开始最好要对一个知识点概念的介绍,但是学树DP的时候很不好找概念,大都是能找到题解,最好的模式是先看概念,然后找简单的题看看题解是大体怎么样的解题模式,然后就开始做练习题,这样对我很好理解

时间: 2024-10-27 18:48:08

暑假集训总结的相关文章

2017暑假集训前总结和规划

距离大一进来已经一年了啊,感觉还是啥也不会,哎,太差了,总结一下这一年都学了写什么吧! 大一寒假开始专题,刷过的有:dp,dfs和bfs,数论(gcd拓展gcd,欧拉定理等等,但是中国剩余定理没学,等复习的时候再学吧),并查集,最短路(bellman-fprd,dijkstra,floyd-warshall,spfa),最小生成树(prim,kruskal),线段树,二分三分 大一下学期有:拓扑排序,基础计算几何(直线线段相交,快速排除实验,跨立实验),矩阵快速幂,博弈基础(nim博弈,威佐夫博

暑假集训0815

最近打了两场多校和一场中期比赛 中期比赛的话也就那么回事= =水题集合(从各种意义上 两场多校被各种虐,已经弱到谁都可以上(rbq)的程度了TOT 团队配合还要慢慢磨合,毕竟刚刚组队不久 这两次比赛有好几题都是差一点就想出来,毕竟还是图样 继续加油(shui)吧 还有就是一定要好好读题啊!最好读完题之后就手算一下数据,以防理解错题意.如果理解错了不会做就罢了,像中期比赛的时候读完题愉悦的打完代码才发现理解错题意了简直不能忍(论坑队友的正确姿势) Multi-University Training

暑假集训7.11 字符串回文暴力

#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned long long ull; #define MM(a,b) memset(a,b,sizeof(a)); const double eps = 1e-10; const int i

暑假集训0808

来HIT参加暑假集训也有将近一周了,一直什么都没写= =. 记一下今天的比赛吧,以后争取每天更新一篇总结. 我是弱比.只能出6题. A:POJ1417 很容易发现yes表示两个人是同一类,no是不同类,然后怎么判断方案是否唯一我就不会了...我是有多么的弱...类似于背包DP,就是用前i个大类填满j个人数的方案. B:HDU1711 裸KMP C:POJ 2503 一个字典的实现.很显然的Trie.(我就想说出题人就不能给个n么..读入麻烦死..) D:POJ2828  比赛的时候还是想的有问题

2017暑假集训~心路历程

2017年暑假集训的个人赛阶段已经结束了. 回想这7场比赛,前几场发挥的还可以. 但是第4场之后开始状态开始下滑.第4场是在TOJ上做的,题数马马虎虎,就是罚时有点多. 第5场的FOJ的比赛打得十分糟糕.因为并不熟悉这个OJ, 赛前测试工作也没有作足. 比赛的时候各种意想不到的CE,WA.这样一来我前两小时只过了一题. 不过最后两小时至少翻到了不至于垫底的位置…… 第6场发挥也不好,被一道树形DP搞住了(这应该是我的强项),卡了一个半小时发现自己题目读错了.结果还是想不出来……然后另一道贪心因为

暑假集训(2)第五弹 ----- Who's in the Middle(poj2388)

G - Who's in the Middle Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description FJ is surveying his herd to find the most average cow. He wants to know how much milk this 'median

暑假集训练习赛题解

比赛链接:http://acm.nyist.net/JudgeOnline/problemset.php?cid=205 对于第一道题 UFS(Union  Find  Set) ,请参见http://blog.csdn.net/u011632342/article/details/37814289,题目大意一样,解法一样,不过后台测试数据还没整太多,数据比较弱... 对于第二道题STR(STRing),本来是想着给大家"送福利"呢,可能由于我的题目表述能力不太好或者样例数据的特殊性或

ACM暑假集训总结

暑假集训总结 回想去年暑假集训,和boblee.yyd组队时,他们为了复习考研,只有我一人默默的在基地训练,再到今年和yj.cq组队,三人能在基地一起刷题训练.再回想去年暑假自己作为新人,只能抱着两位队友的大腿,到今年作为一队的成员,要挑起集训队的大梁.从去年的全俱乐部开黑只能压线过几场网络赛,再到今年的队伍间各自做题,照样能没什么压力的通过网赛.亲眼见证俱乐部由弱到强,由不为人知到众所周知,自己不仅感触颇多,也同样敬佩起当初办起这个俱乐部的创始人们. 作为一个刚刚接触OI就要面临高考的人,才刚

CSU-ACM2014暑假集训基础组训练赛(1) 解题报告

•Problem A HDU 4450                 水题,签到题 水题..没啥好说的.给大家签到用的. 1 #include <cstdio> 2 int main(){ 3 int n,a,ans; 4 while(scanf("%d",&n),n){ 5 ans = 0; 6 for(int i = 0;i < n;i++){ 7 scanf("%d",&a); 8 ans += a*a; 9 } 10 pr

大暑假集训总结(反思)

好吧现在写这个有点晚. 整个大暑假集训了大概三周,经历了无数次考试和起起伏伏伏伏伏伏.总的来说还是前期不错后期打的太浪了,发挥不好.个人感觉越到后期自己的心态越不对劲,和两个教练员都先后聊过,心态有时是一个大问题. 对于心态,考试的时候总是在想这道题我能不能拿到分,能拿多少分,别人能拿多少分,会不会在这里甩下我,等等等等,还是想的太多了,多少前辈死在心态上啊.考试的时候我还是应该多集中精力去想题,而不是这些奇怪的东西. 对于技巧,代码能力可能是我在集训中提升最大的了,基本可以做到有明确思路就可以