可憐與超市

2022-09-22 05:39:09 字數 2079 閱讀 2844

//t4  可憐與超市

//long long!!!!我看到10的九次方了,我直接龍龍

//不對啊,b也小於10億啊,int就夠了

//我聰明的大腦瞬間看出,樹形dp

//題幹的意思是不是1就是根?應該是,但我覺得不穩

//f[u][0/1] 以u為根的子樹,u買或者不買的能購買的最多商品 最優解(之所以這麼定義因為跑不了10億乘5000)

//0是不買 帶點揹包思想,選課那種,這個注意

//f[u][0]+=(f[v][0])

//f[u][1]+=(f[v][1],f[v][0]) 最後輪一遍最優

//就這?????

//現在就是我不知道它是否會是乙個森林,或者就是以1為根

//這樣吧,我賭一把,1根,沒有森林

//不對,這樣還是不好做,我這個值沒法算啊

//要不還是一開始的思路,去算錢,然後再比

//關鍵, ....5000*5000能開嘛 ,是五千萬,應該可以,

//那行,改了改了,全改了

//f[i][j][0/1] 以i為根的子樹,買j件的最小價值 還是選課那個揹包思想,與i的兒子進行輪k

//那麼0 1 就表示用不用優惠劵 0是不用

//考完了我總結一下,就是:加權選課用上皇宮的狀態思想 嘶,你這麼一總結,這可真是一道好題,高低是把樹形整透了

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

typedef long long ll;

const int mx=5000+10;

int n,len;

ll b;

int head[mx];

ll c[mx],d[mx];

ll f[mx][mx][2];

int size[mx];//這跟選課還有些不同,這我得開乙個記錄它的兒子個數

//額怎麼說,其實怎麼著都能寫,不過我覺得這種寫法還清晰一些

struct nodea[mx];

void insert(int u,int v)

void dfs(int u){

f[u][0][0]=0;

f[u][1][0]=c[u];

f[u][1][1]=c[u]-d[u];

// printf("1k f[%d][1][1]=%lld c[%d]=%lld d[%d]=%lld\n",u,f[u][1][1],u,c[u],u,d[u]);

size[u]=1;

for(int i=head[u];i!=0;i=a[i].next){

int v=a[i].to;

dfs(v);

//這個題的k的順序一直是無所謂的,當前處理的子樹拿出來的,從幾開始輪都行

//j的順序必須是這樣,如果是j-k,就是一開始就把總數算出了,其實就相當於乙個01揹包

//j是總容積,k每次填進去,它每次都是有一些從j-k更新的,如果從0到j,就是可能這個點前面

//已經用過了,我再後面又用了一次,點也是每次只能用一次 ,與dp無後效性相符

//如果是j+k,j+k每次從j更新,還是說它從小於它的更新,就得倒序,無後效性

//如果下標為負,它會根據你的陣列在記憶體的位置 更新你陣列裡的其它的值,

//如果在前面就run 後面就會w或者多跑了很多次導致t,這個注意

//關於當j-k 因為我們的答案j是從左右上來的

// 這麼說,當j=總時,k沒有選擇,只能全部奉上,其他都是無意義的;如果你進行j-k

// 當k不是size[v],就需要左邊付出更多,笑死,它根本沒有,從這裡理解它也是無意義的

// 然後有個細節就是k要大於j-kk,但你還是要跟0取個max,因為j也會變小

// k在右邊為了防止j-k<0 也要處理

//這個題是透的不能再透了

int kk=size[u];

size[u]+=size[v];

for(int j=size[u];j>=0;--j){

// j-k<=kk j-kk<=k

for(int k=max(0,j-kk

樹上揹包 可憐與超市

發現商品間的關係顯然是棵樹,所以做樹上揹包。發現商品的 都很高不能放在狀態裡,而價值都是1,所以轉換維度。定義 dp u j 0 1 為在 u 的子樹中選出 j 個物品所需要的最小 其中0代表不用優惠券買u,1代表用優惠券買u。轉移 sum sum dp u j k 1 min dp u j k 1...

HZOI 可憐與超市 樹形dp

學長留的題,質量還是灰常高的。而且我樹規本身較弱,一道也不想放下 題解 這道題我們可以看出是乙個樹形結構,而且是dp dp首先要定義狀態 設 dp i j 0 1 表示當前考慮到第i個物品 以i為根的子樹中 買了j個物品的代價,0表示不用i的優惠券,1表示使用 初始狀態 dp i 1 1 c i d...

可憐的硬碟

這兩天都在抽時間給同學看電腦問題,最後確定是硬碟出現嚴重壞道,前面5g的空間壞道嘩嘩一樣,不知道是怎麼用的。現在給他把壞道區域給遮蔽了,希望能堅持一段時間吧。劃分分割槽時使用了 diskgen這款國產軟體,指定乙個分割槽再修改柱面引數,十分的方便。遮蔽之前還搜尋過hddreg這款軟體,不過最後還是放...