TYVJ1613 不和諧的公司

2022-08-20 21:24:15 字數 847 閱讀 1076

嗯。這個題目本身不難,但是想法還是有一點特別的,所以發出來說一下。

樸素的想法是,對每乙個葉節點,算一遍整個樹的費用然後比較。。

但是這樣是平方的。必然要跪。

然後注意到一點很好玩的。就是如果任意一點確定,那麼它的父親也就確定,父親的父親……也就確定了。

那麼我們找乙個大家的父親——根節點,對每個葉節點計算保持它不改的時候根節點的工資,然後統計一下即可。

code:

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

long long v[200001],num[200001],dep[200001];

int fa[200001],l[200001],r[200001],kind[200001],s[200001];

int main()

else

scanf("%lld",&v[i]);

} int b=1,e=0,tot=0;

for (int i=1;i<=n;i++)

if (!fa[i]) s[++e]=i;

while (b<=e)

if (r[s[b]])

b++;

} for (int i=1;i<=n;i++)

if (!kind[i]) num[++tot]=v[i]*pow(2,dep[i]);

sort(num,num+tot);

int i=1,j,ans=0;

while (i<=tot)

printf("%d\n",tot-ans);

return 0;

}

演算法導論16 1

又是一道動態規劃的題,真的類似於0 1揹包問題.在提示之下解決了,總算是解決了.雖然沒費多少勁.這個東西,沒有用物件導向的方式寫.體驗了一把,結構化.對於引數傳遞,共享資料,的確不及類方便.這種問題的狀態轉移方程,沒有寫對.我找錯了狀態.這段時間看 大全 感覺自己的 風格有所好轉.雖然覺得過去的也不...

C 程式設計報告(16 1)

程式頭部注釋開始 程式的版權和版本宣告部分 檔名稱 salary 加salary 作 者 楊壇壇 完成日期 2011 年 06 月 6 日 版 本號 對任務及求解方法的描述部分 輸入描述 問題描述 程式輸出 程式頭部的注釋結束 include includeusing namespace std v...

1 6 1 有名管道附屬

這是友善之臂的 和備註。希望初學者有用 一.簡介 本列程是由友善之臂說明書中的管道列程的備註版。有助於大家了解select函式以及程式的實現方式。二 重點掌握函式 select struct timeval結構體 fd zero fd set 三 要求水平 可使用內來進行程序通訊。include i...