原创 洞穴 Cave
//紫書P249洞穴Cave //Serene #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #in
原创 Codevs1013 單詞背誦
不知道哪根筋抽了,用map寫Hash,long long就可以滿足Hash了,開心!!//Codevs3013 單詞背誦 //Serene #in
原创 最優矩陣鏈乘 Multiplication Puzzle
Multiplication Puzzle Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9697 Accepted: 6023 Description
原创 獎品的價值 Erasing and Winning
//紫書P253 獎品的價值 //Serene #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<string> #i
原创 聚會遊戲 Party Games
這題主要要注意細節問題,特別是排序後a[n/2]的長度>a[n/2+1]的情況和有後面有Z的情況 下面給個用來調試的樣例: INPUT: 2 ABC ABB 2 ABC ABBA 2 ABC ABBZAB 2 ABBZZA ABC 0 O
原创 比特變換器 Bits Equalizer
//紫書p253 比特變換器 //Serene #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #i
原创 最長嚴格上升子序列O(nlogn)算法
相當於二分,len表示當前最長的長度,maxl[i]表示長度爲i的嚴格上升子序列最後一個數的最小值。滿足如果i<j,則maxl[i]<maxl[j] 2017.8.29補充:注意二分的左端點是0而不是1,因爲有當前數字爲最小數字的情況。
原创 Shuffle的播放記錄Shuffle
//紫書P247 //UVA12174Shuffle //Serene #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #incl
原创 切木棍 Cutting Sticks
簡單的dp//Serene //紫書p278 切木棍 Cutting Sticks #include<algorithm> #include<i
原创 生成排列 Generating Permutations
逆向思考。操作1不變,操作2等價於將尾部數字放到頭部,這樣最後只需要逆序輸出操作序列即可。具體做法把序列看作環狀的,每次操作2就等價於移動頭部的位置,用操作1每次維護頭部的最小元素,再執行操作2。這個過程類似於排序,當a[0]==1或n時
原创 劃分成迴文串 Partitioning by Palindromes
簡單的dp//Serene //紫書p275 劃分成迴文串 Partitioning by Palindromes #include<algorithm> #include<iostream> #include<cstring> #inc
原创 防線Defense Lines
//紫書P242 //UVA1471Defense Lines //Serene #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib>
原创 20個問題 Twenty Questions
狀壓dp 記憶化搜索 s表示當前已經詢問的特徵,x表示目前物品已經詢問過的特徵中所具備的特徵 //Serene //紫書p287 20個問題 Twenty Questions #include<algorithm> #include<i
原创 求樹的重心
Description Consider a tree T with N (1 <= N <= 20,000) nodes numbered 1...N. Deleting any node from the tree yields a
原创 樹的最長路
描述 上回說到,小Ho得到了一棵二叉樹玩具,這個玩具是由小球和木棍連接起來的,而在拆拼它的過程中,小Ho發現他不僅僅可以拼湊成一棵二叉樹!還可以拼湊成一棵多叉樹——好吧,其實就是更爲平常的樹而已。 但是不管怎麼說,小Ho喜愛的玩具又升