原创 Codeforces Round #541 (Div. 2) D. Gourmet choice(並查集+拓撲) F. Asya And Kittens(啓發式合併+鏈表)

D. Gourmet choice 題意:給出兩個序列aia_iai​和bjb_jbj​的大小關係,問能否恢復這兩個序列,如果可以則輸出,否則輸出NoNoNo。 題解:因爲有等於號的存在,所以導致建圖會形成環,因此我們考慮用並查集將等

原创 ZOJ - 1610 Count the Colors(線段樹區間更新)

Count the Colors 題意:每次對區間染色,注意不染端點,然後問最後每種顏色有多少段。 題解:用線段樹維護每個區間的顏色信息,然後因爲不染端點,因此如果染0→40\rightarrow40→4,只會染444個區間那麼我們將

原创 牛客練習賽40 C-小A與歐拉路(樹形dp | 兩次dfs 求樹的直徑)

C-小A與歐拉路 題意:求圖中最短的歐拉路。 題解:因爲是一棵樹,因此當從某一個節點遍歷其子樹的時候,如果還沒有遍歷完整個樹,一定還需要再回到這個節點再去遍歷其它子樹,因此除了從起點到終點之間的路,其它路都被走了兩次,而我們要求總的路

原创 CCPC-Wannafly Winter Camp Day3 (Div2, onsite) I 石頭剪刀布(按秩合併並查集)

石頭剪刀布 題解:每次有兩個事件: yyy去挑戰xxx,如果贏了可以坐在xxx的位置,打平或者輸了就要被淘汰。 詢問在進行所有一類事件後,有多少種情況可以讓xxx現在還沒有被淘汰。 對於第二類事件,我們假設xxx挑戰了別人aaa次

原创 CCPC-Wannafly Winter Camp Day3 (Div2, onsite) A 二十四點*(bfs爆搜)

二十四點* 題解:沒啥好辦法,只有暴力搜答案咯~而且只有兩組數據 代碼 #include<bits/stdc++.h> using namespace std; vector<double> S; struct node{

原创 CCPC-Wannafly Winter Camp Day3 div2 F. 小清新數論* 莫比烏斯反演

小清新數論 心情:蒻蒻的第一道莫比烏斯反演!!看了好幾個小時QAQ,終於看懂些了!開心!^_^ 題解:(1)∑i=1n∑j=1nμ(gcd(i,j)) \sum_{i = 1}^n\sum_{j = 1}^n \mu(gcd(i,j)

原创 CCPC-Wannafly Winter Camp Day1 (Div2, onsite) I 起起落落(dp)

起起落落 題解:畫一下圖我們就可以發現要求的序列是波浪並且整體下降趨勢的。pa[2k−1]&gt;pa[2k+1]&gt;pa[2k]p_{a[2k-1]}&gt;p_{a[2k+1]}&gt;p_{a[2k]}pa[2k−1]​>p

原创 CCPC-Wannafly Winter Camp Day1 (Div2, onsite) F 爬爬爬山(dijkstra)

爬爬爬山 題解:因爲降低山需要花費l∗ll * ll∗l的代價,因此我們可以將這部分花費加到邊上。然後跑最短路就好了。 #include<bits/stdc++.h> #define P pair<LL,int> typedef lo

原创 CCPC-Wannafly Winter Camp Day4 (Div2, onsite) A C F G I

比賽鏈接:https://zhixincode.com/contest/17 A 奪寶奇兵 題解:因爲是先從1->n再從n->1,所以我們可以考慮當成一遍走,即每次的選擇無非[ai→ai+1,bi→bi+1]或者[ai→bi+1,bi

原创 Codeforces Round #536 (Div. 2) A B C D E(dp)

這可能是我做div2div2div2以來做的最好的一次?它居然unratedunratedunrated了!哼╭(╯^╰)╮不給力的服務器!關鍵時刻拓機!雖然這次的D比較水。但是是我一次過了四題QAQ… 比賽傳送門:https://c

原创 CCPC-Wannafly Winter Camp Day1 (Div2, onsite) E 流流流動(樹形dp)

流流流動 題解:題目是點的選與不選的問題,並且有連邊,因此我們很容易想到樹形dpdpdp,但是題目圖的並不是聯通的,因此我們可以將000與每一個連通集建邊。然後考慮dp[u][1]dp[u][1]dp[u][1]表示選取以點uuu爲根

原创 Codeforces Round #535 (Div. 3) A B C D E1

A. Two distinct points 題解:特判判斷一下兩個區間的左右關係即可。直接輸出邊界。 #include<bits/stdc++.h> using namespace std; int main() { #ifnd

原创 CCPC-Wannafly Winter Camp Day1 (Div2, onsite) J 奪寶奇兵(貪心)

奪寶奇兵 現場時:一開始我有點糾結,因爲不知道是優先當前數量最多的還是優先當前最便宜的。然後我起初的想法就是維護一個當前數量最多並且最便宜的堆,直到當前已擁有的寶物數量大於堆頂的寶物的數量。後來想了想,是不對的,因爲我維護的第一關鍵字

原创 CCPC-Wannafly Winter Camp Day1 (Div2, onsite) B 吃豆豆(dp)

吃豆豆 題解:不妨反向考慮,題目問到達並且至少獲得CCC個糖果所需的最少時間,那麼我們考慮位置爲(i,j)(i,j)(i,j)時間爲ttt的狀態時所能獲取的最大糖果數。那麼答案就是dp[ex][ey][t]&gt;=Cdp[ex][e

原创 HDU 5685 (前綴+逆元)

Problem A 題意:給出你哈希值的計算方式,然後多次詢問子串的哈希值。 題解:我們通過觀察哈希值的計算式子就可以發現是連乘,又是多次詢問,因此我們可以想到打表的方式。前綴積即可。ans[a,b]=dp[b]dp[a−1]ans[