在dfs過程中加上棧記錄當次dfs走過的路徑
如果當次dfs到了乙個之前的dfs已經經過的點
又因為只對沒有訪問過的點開始dfs
所以這種情況就說明接下來不可能返回到當次dfs開始的點
將棧內元素取出,恢復vis狀態為未訪問過,起始點保持訪問過狀態(說明這個點不可用)
最後找最優解
#include#include#include
#define mx 200010
intar[mx],dat[mx],dn,num,par;
bool
vis[mx];
void dfs(int
p) }
}int
main()
printf("%d
",ans);
return0;
}
zjnu 1182 能量項鍊
這道題和石子歸併其實是同樣的題目。題意 那邊寫的不是很清楚 首先給你n個珠子,每個珠子都有兩個屬性,分別是頭標記與尾標記,然後分別給出n個數,分別代表的是這些珠子的頭標記。前一顆珠子的尾標記一定等於後一顆珠子的頭標記。如果前一顆能量珠的頭標記為m,尾標記為r,後一顆能量珠的頭標記為r,尾標記為n,則...
ZJNU 1067 約瑟夫 中級
打表處理 case 1超時 對m進行列舉,每次列舉進行一次判斷 因為好人壞人均為k個,那麼只要讓下乙個死亡的人的位置p保證在1 剩餘壞人數量之間即可,不滿足則直接break列舉下乙個m 實際上對於m,因為m必須是 2kc 1,2kc k c n 之間的數,所以還能再優化,但下面的 已經能夠在78ms...
HDU2201 簡單概率
hdu2201 一日,阿波收到了一張請柬,請柬裡說在遙遠的美國將召開全球比武大會,特邀請阿波過去做嘉賓。於是他託人買了當晚的機票,阿波來到機場發現其他乘客們正準備按機票上的號碼 1,2,3,n 依次排隊上飛機,由於阿波是第一次坐飛機,所以他想先一步登機,因此他插隊第乙個登上了飛機,並且他也不看機票,...