嗯。這個題目本身不難,但是想法還是有一點特別的,所以發出來說一下。
樸素的想法是,對每乙個葉節點,算一遍整個樹的費用然後比較。。
但是這樣是平方的。必然要跪。
然後注意到一點很好玩的。就是如果任意一點確定,那麼它的父親也就確定,父親的父親……也就確定了。
那麼我們找乙個大家的父親——根節點,對每個葉節點計算保持它不改的時候根節點的工資,然後統計一下即可。
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...