hdu1016素數環
給定n,(0<1>需要先製作素數表,因為n在20以內,所以環中兩數相加小於40,素數表判斷到39即可
<2>dfs求解,在乙個點中可以選用的數滿足「在給定n範圍內,與前乙個數相加為素數,沒有被選用過「
需要注意開始的節點1是固定的,應該在dfs前判斷為已經走過或者dfs中永不遍歷數字1
#include
#include
using namespace std;
int ans[21],a[40],pass[21],n;
void check()
printf("\n");}}
void dfs(int step)
else dfs(step+1);
pass[i]=0;//一條路徑用完了,它所經過的數不能影響下一條路徑}}
}int main()
}//素數表,0是素數,1不是
int test=0;
while(scanf("%d",&n)!=eof)
return 0;
}
寒假集訓 專題二dp A 飛彈
飛彈攔截工具每次只能攔截不大於前一次高度的飛彈。給一組飛彈的資料,問 一次使用該工具最多能攔截多少飛彈,最少使用多少該工具能攔截全部飛彈。一問 仔細思考後發現是最長不上公升子串行問題,採用lis的解法 二問 想要攔截所有飛彈,不妨想後乙個飛彈高度要小於或者等於前乙個飛彈可以全部攔截,若出現後乙個飛彈...
TS寒假集訓線段樹專題B題
ts寒假集訓線段樹專題b題 對於任意乙個序列因為數字全是從0 n 1,所以我們發現對於任意x都有x個比他小的數n 1 x個比他大的數,所以當吧x從隊頭移到隊尾是就會增加n 1 x x個逆序。根據以上發現我們可以遞推的算出n個序列的逆序數代價是on。而求乙個序列逆序數的暴力演算法是n方的於是乎看見50...
寒假集訓 Find Metal Mineral
題目鏈結 題意 給出一顆生成樹,1 n 10000,在某乙個節點有k個機械人 k 10 然後機械人從這裡開始走,要求遍歷完節點,隨便停到什麼地方.求最少的路程總和.題解 樹形dp,關鍵是dp u i i的定義,因為機械人可能從子樹再跑回來,然後為了避免重複討論,應該定義為 在u為根的子樹上停了幾個機...