ctsc2010 星際旅行

2021-06-05 03:37:40 字數 858 閱讀 6459

題意很簡單:

給定一棵樹,問從根分別走到每個節點的最長路程,其中每個點給定lim,即最多從該點出發lim次,保證lim大於等於該點的度數。

特別「鳴謝」ldl在他的模擬題中出了這道題。

當題解講這要用樹形dp解網路流模型時,都被驚異了,完全沒有想到網路流,也完全沒有必要網路流,atm在考場上直接有樹形dp ac之,考後hyc也自己yy出了另一種dp方法,

網路流對於這道題真心不知道有什麼意義。

std,atm 和 hyc的dp都有乙個無語的問題,那就是細節比較多,轉移或統計時要使勁的推啊推,修改啊修改,各種地方的加減使得出錯概率很高,對於我這種傻×肯定寫起來比較吃力//用atm的方法寫了一半,被打斷,後來去寫就又推不出了。

於是只要yy 啊  yy ,yy出乙個幾乎沒有煩人的細節,甚至沒有寫dp過程的方法:

正向思維難度很大,發現可以設計乙個回退操作,而回退操作對於答案的影響僅為1!

那麼可以先用簡單的統計求出從根回到根得到的最大步數,然後用dfs序求解,dfs遞迴時,等於是要撤銷一步操作,分三種情況討論,只有加1和減1操作,完全沒有麻煩的。

方法簡單到1a, 在衡八上刷到了rank 1(貌似是頭一次)

# include # include # include # include using namespace std;

const int v = 50000+10, e = 100000+10;

int top, linke[e], point[e], next[e];

int n, bj[v], d[v], cs[v], ans[v], now;

void link(int x, int y)

int min(int x, int y) {return x

Ctsc2010 星際旅行(退流思想)

傳送門 思想很重要,題目給出了每個星球的hi大於等於與該星球直接相連的星球數 即度數 就說明從0點出發,一定可以再回到0點。在第一次dfs中把一些還可以加的流加入使得答案更大。因為圖此時已經連通。然後對於相鄰的兩個點,就一定至少有乙個的度數為0。在第二次dfs中運用 退流 思想,對於每乙個點求出它的...

bzoj 1917 Ctsc2010 星際旅行

公元3000年,地球聯盟已經攻占了銀河系內的n個星球,出於資金的考慮,僅僅在星球間建立了n 1條雙向時空隧道保證任意兩個星球之間互相可達。出於管理上的考慮,第i個星球的行政長官要求每個公民在一年內不得從該星球利用時空隧道次數超過hi次 這一統計是基於離開次數統計的,如果你已經使用從該星球離開過hi次...

CTSC2010 效能優化

ctsc2010 效能優化 迴圈卷積快速冪 兩個注意點 n 1不是2 k p 1形式,任意模數又太慢?n 2 k1 3 k2 5 k3 7 k4 多路分治!深刻理解fft運算本質 分治,推式子得到從下往上的迭代公式 最後求的是w n i的點值 快速冪 迴圈卷積快速冪比較特殊,就是g f,n的項的係數...