noip算法
‘壹’ 求NOIP提高组考试需掌握的算法(大纲)
1、排序算法(快排、选择、冒泡、堆排序、二叉排序树、桶排序)
2、DFS/BFS 也就是搜索算法,谨含乎剪枝务必要学! 学宽搜的时候学一下哈希表!
3、树
①遍历
②二叉树
③二叉排序树(查找、生成、删除)
④堆(二叉堆、左偏树、堆排序)
⑤Trie树祥悉
4、图(图论建模)
①最小生成老弯树
②最短路径
③计算图的传递闭包
④连通分量(其中要掌握并查集技术)
强连通分量tarjin
⑤拓扑排序、关键路径
⑥哈密尔顿环
⑦欧拉回路(USACO 3.3 题1 Fence)
⑧Bell-man Ford、SPFA(能解决负权回路)(USACO 3.2 题6 Butter)
⑨二分图(匈牙利算法)(USACO 4.2 题2 stall)
5、动态规划(背包问题只是其中一种)
①线性动规
②区间动规
③树形动规
④图形动规
6、分治(掌握了动规分治就好学了)
7、贪心
8、位运算(可以用来进行优化)
‘贰’ NOIP 2003年 普及组 第1题.求详解!!!.......说清算法.......
先讲第一个if
意思是 (x>y) 或者 ((y!=20) && (ok1==0)) && (ok2!=0) 为真 整体就为真
前部分x>y 已经不为真了。所以只需看后半部分的真假
后半部分的意思是
((y!=20) 为真 并且 (ok1==0)为真 )并且 (ok2!=0) 为真 整体才能为真
三者皆为假。
所以 || 之前为假 之后也为假 假||假=假
程序走到else if
(ok1!=0) 并且 (ok2==0) 此条件满足 所以a现在等于-1
因为else if 满足了
就不会进入下面的 else了
所以输出就是a的当前值 -1