JZOJ A組 傳送門

2021-08-29 02:57:53 字數 1737 閱讀 3485

2023年,normalgod在glados的幫助下,研製出了傳送槍。但glados想把傳送槍據為己有,於是把normalgod扔進了一間實驗室。這間實驗室是一棵有n個節點的樹。現在normalgod在一號節點,出口也在一號節點,但為了開啟它,必須經過每乙個節點按下每個節點的開關,出口才能開啟。glados為了殺死normalgod,開始在實驗室裡釋放毒氣,因此normalgod必須盡快逃出這間實驗室。

當然,normalgod手中的傳送槍是可以使用的。傳送槍可以發射出兩個顏色不同的傳送門。normalgod可以從其中乙個傳送到另乙個。儘管傳送槍可以在視野範圍內的任何乙個經過特殊處理的表面開啟一扇傳送門,但這間實驗室的設計使得normalgod只能在他所處的房間內開啟乙個傳送門。 在已經存在了乙個同顏色的傳送門時,開啟新的傳送門會使與它同顏色的舊門消失。傳送和開啟傳送門所需時間為0。

顯然,利用傳送槍會讓normalgod更快解決謎題,可normalgod死在了按下最後乙個按鈕的路上。儘管如此,glados還是很想知道到底normalgod最快能用多久逃出去,這對她的實驗室設計方**有重要的指導作用。作為glados的演算法模組,你要完成這個任務。本題時限為2000ms

第一行乙個整數n。之後n-1行,每行三個整數ui,vi,ai ,表示有一條從ui 連向vi ,花費時間為ai 的通道。

一行乙個數t,表示最小的脫逃時間。

題意:給定n個結點的樹,每條邊權wi,可以進行傳送門操作,求經過每個結點並最終回到根節點的最短路徑長度。

易知:每條邊至多經過2次。

2.那麼最長距離總權值2,那麼我們只需要使經過一次的邊的總和更大,則長度=總權值2-選用的單邊權值之和。

設dp[i][0/1]

0表示在i點及i點兒子設傳送門所能得到的最大總和

1 表示不在i點及i點兒子設傳送門所能得到的最大總和

首先,對於dp[i][1]的情況,一定存在i點的祖先中有傳送門,這樣才能使結果更優。所以對於他的每乙個兒子都能跳回到他的祖先。但實際上只有使乙個兒子跳回祖先時,才能保證fa->i的邊經過兩次。

否則轉化為dp[i][0]的情況。則我們要使選的兒子最優。

dp[i][1]=max(dp[vi][1]+wi);

其次,對於dp[i][0]的情況,在每個兒子中設立傳送門並不會影響到其他兒子,因為總能從兒子回到i時再在i重設傳送門。所以我們就取每個兒子設與不設的最優值之和。

dp[i][0]=σmax(dp[vi][0],dp[vi][1]+wi);

#include#include#define ll long long

using namespace std;

const ll maxn=1e6+77;

long long n,f[maxn][2],d[maxn],list[maxn],cnt;

struct e

e[maxn*2];

void add(ll u,ll v,ll val)

void dfs(ll u,ll fa)

}int main()

JZOJ A組 量子糾纏

第一行包含乙個正整數 m,代表運算元。接下來 m 行,每行可能有以下形式 1 s 代表將數字串 s 加入資訊集中 2 s 代表詢問數字串 s 是否在資訊集中 3 a b 代表使數字串 a 和 b 互相糾纏 對於每乙個 2 操作,如果詢問串不在集合中,請輸出一行乙個整數 0,否則輸出一行乙個整 數 1...

JZOJ A組 跳樓機

djl為了避免成為乙隻鹹魚,來找srwudi學習壓 的技巧。srwudi的家是一幢h層的摩天大樓。由於前來學習的蒟蒻越來越多,srwudi改造了乙個跳樓機,使得訪客可以更方便的上樓。經過改造,srwudi的跳樓機可以採用以下四種方式移動 1 向上移動x層 2 向上移動y層 3 向上移動z層 4 回到...

JZOJ A組 拯救奶牛

貝希被困在乙個三角形的迷宮之中。這個迷宮有n行 1 n 1000000 比如下圖是乙個3行的迷宮。迷宮的第i行有2 i 1個三角形,從左到右分別編號為 i,1 i,2 等等。貝希每次可以從乙個三角形走到任意乙個乙個跟當前的三角形有鄰邊的三角形。比如說,如果她目前處於三角形 3,3 那麼,她可以走到三...