2017 9 7 騎士 思考記錄

2021-08-07 21:28:23 字數 944 閱讀 4605

這個題其實乙個月前就想寫了、但當時看到環基樹就嚇跑了、、

但其實這個題除了環要找出來單獨跑一邊dp、、別的就真的沒了

先把環找出來(由於只有乙個環,所以直接dfs)

然後對環上的每個點做一遍子樹的dp

然後把環拆下來,列舉第乙個點的狀態、從這個點左邊一直做到這個點右邊

然後就沒了、、注意它可能有多個子集、、  

乙個dp被我活生生寫成了碼農題、別的題解都40行、但還是調過了、碼力看來還是可以的、 碼:

#include#includeusing namespace std;

#include#define n 1000005

#define ll long long

vectorv[n],vv;

ll fu[n],h[n],f[n][3],g[n][3],n,a[n],x,ans,j,yici,d[n];

bool vis[n];

void dfs(int o,int fa,int dis)

h[x]=1;

vv.push_back(x);

} }else dfs(nd,o,dis+1);

}}void dp(int o,int fa)

lin+=max(g[vv[1]][1],g[vv[1]][0]);

//第乙個取

ll lin2=0;

lin2+=f[vv[0]][1];

g[vv[vv.size()-1]][0]=f[vv[vv.size()-1]][0];

g[vv[vv.size()-1]][1]=0;

for(j=vv.size()-2;j>0;j--)

lin2+=g[vv[1]][0];

ans+=max(lin,lin2);

} } printf("%lld",ans);

}

記錄2017 9 7CVTE嵌入式軟體筆試程式設計題

1.輸入乙個字串,輸出字串中最後出現次數最少的字元,如果都有重複,則輸出最後出現字元最多的字元,例如輸入 abbccdffgg 輸出 d 輸入 aaabbbccddee 輸出 b include include include include include using namespace std ...

2017 10 6 單詞 思考記錄

少有的會做的ac自動機題 這個題是匹配模式串 所以就不需要匹配的過程,只需要建出fail樹,然後直接拓撲 由於每次加進去乙個單詞,這個單詞的每乙個字母都有可能作為最後乙個字母影響他的失配,所以詞路徑上的每個字母都需要標記 然後失配是保證了字尾相等,所以如果失配是詞,則這個點的所有繼承過來的標記都可以...

2017 10 28 壓縮 思考記錄

這個題首先要知道m和r不是棧的搭配,是貪心的搭配,就是向左找到第乙個m。如 abababab cdcdcdcd abababab cdcdcdcd abrrcdcdcdcdr mabrrcdrr r 然後如果你想使用r來重複兩個相同區間就必須保證m出現在最左端,或整串都不出現 所以f 左端點 右端點...