ZJOI2017(1) 游记

ZJOI2017第一轮:2017.3.21---3.23

温州中学

//http://www.cnblogs.com/ARZhu-NOIpAK/p/6596879.html  

//http://www.cnblogs.com/ARZhu-NOIpAK/p/6601676.html

//上面是学长的博客

Day0

     有好多天没做作业了,感觉不错。

     温州还是不错的,宾馆也很满意。

     感觉明天会听不懂。

 

Day1

     第一节课的前半部分还能勉强听懂,后面和下午一脸懵逼。

     第一节课是由XJ中学的周子鑫学长上谈谈搜索题,下面是一点总结。

     搜索算法是利用计算机的高性能来有目的的穷举一个问题解空 间的部分或所有的可能情况,

从而求出问题的解的一种方法。现阶 段一般有枚举算法、深度优先搜索、广度优先搜索、A* 算法、

回溯算法、蒙特卡洛树搜索、散列函数等算法。

     在大规模实验环境中, 通常通过在搜索前,根据条件降低搜索规模;根据问题的约束条件 进行剪枝;

利用搜索过程中的中间解,避免重复计算这几种方法进 行优化。

part 1:折半搜索

     比如说双向广搜之类的,主要是从起点和终点交替搜或者是同时搜,可以降低搜索复杂度。

如果答案容易合并,或者搜索的操作可逆,可以考虑折半搜索。

     还有一个技巧,要算方案数时,将折半的两边都存入hash数组,有重叠则答案+1。

part 2:

     启发式搜索

     A*:BFS的启法式版本;

     IDA*:前者的迭代加深版本

     A* 的主要思想是通过估价函数来调整搜索顺序从而优化复杂度,比如说:先搜分支少的。

     IDA*则是通过估价函数来最优性剪枝

part 3:

     Dancing links(舞蹈链)

     主要是这几句:

           L[R[x]]← L[x]

           R[L[x]]← R[x] (删除)

     现在如果要撤消这个删除操作呢?

           L[R[x]]← x

           R[L[x]]← x

     为什么要在把一个结点删除掉以后再把它放进来呢? 一个典型的应用是在 DFS 的时候,还原之前的链表状态

     这个东西看上去不怎么奇妙,但可以大大优化精度覆盖等覆盖问题的X算法。

     后面就讲了好多典型的搜索题,然而没多少听懂。

 

     第二节课是STL的正确姿势,很多函数都很陌生,感觉自己现在用不到?

     这里列几个函数,以后可能用的上:unique  nth_element  binary_search  rope  equal_range

priority_queue<int,vector<int> ,greater<int> >Q(大根堆转小根堆)

     第一天的最后一节课讲了一些题目,反正我一道也没明白,这里就不讲了。

 

Day2

     还是讲题,听不懂ing……

学了一个SG函数:

在一个DAG中,从起点开始,每人移动一步,一方不能走了则输;

SG[i]= mex{SG[x]} //x为i能到达的点

(mex表示在集合中未出现的最小自然数 mex{1,2}=0)

如果有两张图同时可以选,答案则为两张DAG的值异或一下

     直接跳过。

 

Day3 

     考试+爆0。  (爆0很有意思的呀)

     花了一半的时间敲第一题,最后才发现写错了,一紧张,20分的链状本来很稳的,手算把规律算错了完美0分。第二题是一道概率题,我一道这样的题都没碰过,暴力又太难写了,果断放弃。(喂,喂,明明题目看了很久的)第三题打了个不能再暴力的暴力,n^m的复杂度(真佩服我自己的智商),考场上差点连KMP都忘了。

 

总结:

    毕竟是第一次参加省选,爆0也是正常的(这个借口不错)。说明自己的水平是非常非常不够的,以后还要更加努力,数学和科学也要更加突出,早日考上满意的高中。

                                 天赋决定上限,努力决定下限。------maximum

posted @ 2017-03-22 21:18  hanyu20021030  阅读(288)  评论(4编辑  收藏  举报