(上不了p站我要死了)
呜呜呜,这马上就要noip了,却突然发现自己还有好多薄弱的环节。心态爆炸啊。。。!
知识收获
考试收获
辣么首先是专题考试的收获
先考了dp专题的考试,发现自己的dp还是可以的,但是一些细节上的基础知识还不牢固(比如倍增跳到数组外面去了,拓扑排序写成dfs什么的)。
然后就是一些考试暴露出来的毛病,如读题不仔细(忘了%),以及没有想清楚范围(单调队列优化时多了一些不合法状态)。
后来就考了图论。第一试还将就,大概有头一天听了同学的分享的缘故(不然我连差分约束怎么建边求最长还是最短都不知道)。而第二试就死的惨,虽然头天有同学讲过(还有原题),但是那天因为调别的题调了很久(一直wa),就没有时间来补,再加上之前的图论就没学好、基础没打牢,就造成了什么都不会。当然,也有不敢想的畏难心理在里面。
但是还是收获颇多。
知道了拓扑序的很多优化(虚点、以一代多),转化模型后dfs怎样剪枝(合法方案必定不会超过的范围)。当然,还有还没改出来的第二试,二分图的最大匹配的含义、神奇的floodfill算法求有向图割点、最小生成树的单调性 等。
其中图论的运用主要在于模型的建造上,这种能力还是要靠经验的积累,(果然还是需要多做题啊,但是我做题的速度太慢了)
同学交流收获
接下来就是同学们进行分享后的收获了
图论打头(我图论烂的一比)
首先是欧拉回路。感觉欧拉回路的应用并不广(可能是我见识太短浅了),但是也不可不学。lkq的算法太长了,还是dogther学长的代码清真,倒序输出真是巧妙。
void dfs(int u){
for(int i=head[u];i;i=nxt[i]){
if(vis[i]) continue;
int v=end[i];
vis[i]=vis[i^1]=1;
dfs(v);
}
stack.push(u);
}
然后是拓扑排序。这个算法在有优先级或大小关系时很可能用上。然后拓扑序有一个重要的应用,就是虚点。如果直接连边,有时就是乘积的复杂度,而虚点能将乘变加。另外,拓扑也会和dp结合起来(其实dp的本质就是在拓扑序上跑,doggu神说的)。
之后就是最短路算法啦。虽然最短路很简单(dijkstra、spfa什么的),但是要复杂的话还是可以复杂起来的(最短路条数、次短路等)。另外差分约束是最短路最长路的很经典的运用,也用到了判负环的知识。
day2的分享就有点吃不消了。。
关于图的连通性,tarjan缩点模板过手了一遍,发现有一些小细节忘了,导致调了很久。。看来这个tarjan需要多打几遍,要烂熟于心才行。
最小生成树我是真心烂。最基础的最小生成树的方法我是会,但是完全不能灵活运用起来。是需要多做点题来长见识。
二分图我也学到不是很好。根据考试题以及见过的一些题,当物品存在两个不同的性质、又需要不重复,则有最大匹配。另外,二分图的几个变式:最小点覆盖、最小边覆盖、最大独立集,都不熟练,还需恶补一下。
最大流和最小割,主要处理有后效性的问题。其中最小割的 两者取其一的问题 和 蕴含式最大获利问题 还是很巧妙的。
后来的dp
期望就不说了
zyc讲的非常好啊。其中很多优化我们不能以为只有单调队列、斜率优化什么的。仔细分析其中的单调性,常常就会茅塞顿开。
复习计划
听取Mr.hu的意见,既然之前学的有些划水,无法和那些一直都很努力的人比,那就重视基础。把基础打牢。
近期的自主学习时间较少,而自己的做题速度又偏慢(主要是要调很久)。所以主要是将考试题调完。
大体的复习阶段(只剩半个月了):
图论这几天要搞完(半周)
剩下的时间不多了,还得再来一轮dp才行(半周)
数论、搜索等要压时间
重视基础