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