題目鏈結
首先題目要求字典序最大,則顯然我們應該將大的數安排在前端。
那麼現在來處理取相鄰數的問題,我們可以使用並查集維護 每個位置往後最近的未被取走的數的位置,下文用\(fa_i\)表示。
當乙個數(假定位置為\(i\))被取走時,將\(fa_i=fa_\),查詢時直接取出即可。
另外,當要取的數是最後乙個時,後面沒數,不合題意。需要特判。
上**
#includeusing namespace std;
int n,m;int a[100500],fa[100500],ans[100500],b[100500];
//b陣列存每個數的出現位置
int fafa(int x)
void hebing(int x,int y)
//並查集維護上文所述
int main()
for (int i=n;i>0;i--) }
for (int i=1;icout
}
題解 P5462 X龍珠
賽題 b p5462x龍珠 滿分 100分 發乙個set做法 維護兩個set,乙個按照順序排序,乙個按照值排序。每次從大往小取,問題就變成了判斷這個最大值後面是否有數,直接檢視一下按照順序排序的該數是否有後繼。編譯記得用c 11,請安心食用。為了方便理解,按照順序排序的set寫得不夠優美 winle...
洛谷 P5462 X龍珠
鏈結 x龍珠 是一款益智小遊戲。遊戲中有 n 2 n n 2 n 個編號互不相同龍珠按照給定的順序排成乙個佇列,每個龍珠上面都有乙個編號。每次操作時,選擇並取出龍珠佇列中相鄰的兩個龍珠,放到目標佇列的末尾 目標佇列最開始是空的,且這兩個龍珠的前後順序不變 然後去除原龍珠佇列的空隙。反覆多次,直到原龍...
luoguP1041 傳染病控制 x
近來,一種新的傳染病肆虐全球。蓬萊國也發現了零星感染者,為防止該病在蓬萊國大範圍流行,該國 決定不惜一切代價控制傳染病的蔓延。不幸的是,由於人們尚未完全認識這種傳染病,難以準確判別病毒攜帶者,更沒有研製出疫苗以保護易感人群。於是,蓬萊國的疾病控制中心決定採取切斷傳播途徑的方法控制疾病傳播。經過 wh...