启发集
spfa优化
1.SFL优化
尽量维持决策遍历队列的单调性,这样可以使得以更高的频率用更优的点更新。
具体而言,如果dis[b[head+1]]>dis[b[tail]],则swap(b[head+1],b[tail])。
2.单点最短路优化
由于spfa自带求单源到所有点的最短路,如果我们只需要求单源到单汇的最短路,那么显然如果当前节点比目标节点更劣就直接跳过。
考虑某个值得动态变化过程,可以刻画图像。
考虑建立超级源和超级汇将原DAG转化为一个连通的DAG。
向量初步接触
向量*实数=一个放大或缩小的向量
向量+向量=遵循平行四边形定则的一个向量(参考力的合力)
利用单位向量表示一个向量。
平时见的平面直角坐标系就是以(1,0)和(0,1)为单位向量的坐标系。
位运算考虑按位操作
SPFA的关系式只要是二元关系即可。
点双连通分量
在一棵生成树上,如果一个点x,不存在一个son[x]有虚边连向x的祖先,那么x就是一个割点;
依靠割点找出点双连通分量。
期望
先从固定期望开始求起,一步一步推。
推算通式
尽情推,往死里推,正难则反。
如∑ni=1i∗ki,将其转化为n∑ni=1ki−∑n−1i=1∑ij=1kj。
就算是打暴力,也要加尽优化
垃圾STL,不判断边界条件,不得不手打QSORT。
问题
1.调试不了的时候,设置环境变量:
“计算机-属性-高级系统设置-环境变量-Path”
Pascal:“…\FPC\2.4.0\bin\i386-win32”
C++:“…\MinGW\bin”
再不行,请教监考员。
2.unsigned long long 输出用%llu。
再不行,cout。
黑择明
正常的NOIP联赛,前两题的难度相对偏小。
这时就不应该掉以轻心:
第一题往往是一种怪异的题目:
正如14年的“生活大爆炸版石头剪刀布”和15年的“幻方”,确实十分之简单,但是不能打拍;
这就给人十分不安的心理暗示。
这种题目尽量找到拍的方法,并且一定要细心,多出几个手动数据,并且尝试极限数据,并考虑特殊情况。
第二题就偏向于正常的题目,可以打拍,并且有一丢丢的思维难度。
这种题一定要打拍,正常面对就可以了。
我认为这种题是三道题中最简单的。
因为可以拍,又不至于太难。
至此,应该花的时间不能太多。
因为第三题往往细节贼多,或者思维难度较复杂。
耗时往往玄学,有时候2h也不一定能完成。
这时就要放正心态:
暴力一定要打好,加入剪枝骗分。
一定要有耐心。
而后者就要平时锻炼思维。
做法往往机智,巧妙。
暴力打了,分数也不至于太低
黑夜给了我黑色的眼睛,而我却要用它来寻找光明。