日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

codeforces educational round110 e

發(fā)布時間:2025/3/12 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 codeforces educational round110 e 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

codeforces educational round110 e

給一顆初始只有根節(jié)點0的樹,規(guī)定一個節(jié)點有數(shù)量aia_iai?,單位價格為cic_ici?的礦物。q個操作,一是往某一個節(jié)點下增加一個節(jié)點,保證增加的節(jié)點的單位價格比這個節(jié)點高;二是選擇某個節(jié)點,從根節(jié)點到當(dāng)前節(jié)點路徑上購買www個貨物,要求價格和最小,如果不夠就能買多少買多少。

做這個題的時候少看了一個條件,沒看到保證比父親節(jié)點價格高,所以不會。后面發(fā)現(xiàn)別人寫的代碼都是樹上倍增,才知道題讀錯了。不過反正樹上倍增也不熟……

const int N = 3e5 + 10; int fa[N][21], a[N], c[N];int main() {int T = 1;//T = read();while (T --){int q;q = read(); a[0] = read(); c[0] = read();for (int i = 0; i <= 20; i ++)fa[0][i] = -1;for (int i = 1; i <= q; i ++){int jud = read();if (jud == 1){fa[i][0] = read();a[i] = read();c[i] = read();for (int k = 1; k <= 20; k ++){if (fa[i][k - 1] == -1)fa[i][k] = -1;elsefa[i][k] = fa[fa[i][k - 1]][k - 1];} }else{int v, w;v = read(); w = read();int temp = w;long long ans = 0;while (temp > 0 && a[v] > 0){int d = v;for (int i = 20; i >= 0; i --){while (fa[d][i] != -1 && a[fa[d][i]] > 0)d = fa[d][i];}int now = min(temp, a[d]);temp -= now; a[d] -= now; ans += (long long) now * c[d];}printf ("%d %lld\n", w - temp, ans);fflush(stdout);}}}return 0; }

總結(jié)

以上是生活随笔為你收集整理的codeforces educational round110 e的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。