FZU 11月月賽D題 雙向搜尋 二分

2022-05-23 18:24:09 字數 1214 閱讀 1387

雙向搜尋感覺是個不錯的技巧啊

題目大意:

有n的物品(n<=30),平均(兩個人得到的物品差不能大於1)分給兩個人,每個物品在每個人心目中的價值分別為(vi,wi)

問兩人心目中的價值差最小是多少。

分析:直接暴搜目測會超時

想到先搜尋前一半,用陣列a[0][i]儲存第乙個人在前半段取 i 個物品兩個人的差的所有情況;

再搜尋後一半儲存兩個人的差的相反數,用相同的規則儲存在a[1]中。

要想總差最小只需要

a[0][i]-a[1][num-i] (num=n/2或 n/2+1)的絕對值最小即可..

找這個最小值可以用二分查詢優化

然後就不會超時了

ac**:

#include #include 

#include

#include

#include

#include

using

namespace

std;

#define inf 500000000

int a[2][32][70000

];int nn[2][32

];int v[32],w[32

];int

n;void dfs(int now,int e,int num,int ans,int

flag)

int p=flag?(-1):1

; dfs(now+1,e,num,ans-p*w[now],flag);

dfs(now+1,e,num+1,ans+p*v[now],flag);

}void

ini()

for(int i=0;i)

}int fun(int val,int

pos)

int k=upper_bound(a[1][pos],a[1][pos]+num,val)-a[1

][pos];

res=min(res,abs(val-a[1

][pos][k]));

if(k)

return

res;

}void

solve()

}for(int i=0;i<=n/2;i++)}}

printf(

"%d\n

",ans);

}int

main()

return0;

}

NOIP模擬賽 洛谷11月月賽

t1終於結束的起點 題解 列舉啊.斐波那契數 第46個爆int,第92個爆long long.發現結果一般是m的幾倍左右.不用擔心t。題解 貪心。從當前沒跳過的最高的和最低的之間來回跳。預計10分 include include include include define ll long long...

某古 11 月月賽 I 遊記

難度好評,沒有像我上次打的那場比賽那麼水了,不過自己的分數還是好低,只會前三題。希望你古月賽的題目一直都能像這場這麼有意思。三角形面積公式 s fracah 由於 a 相等,所以題目給出的其實就是 h 之比。題目中給出了 a,b,c,d 不妨令 a le b le c le d 由於題目給出的是正方...

洛谷11月月賽(284pts rank85)

我是比賽完後在去寫的 這是我第一次打洛谷月賽,之前一次是比賽完才去看而且寫了第一題就沒寫後面的了 284分,太水了,rank85左右 第一題第二題ac了,第三題寫了3 n的演算法,知道會超時,也知道滿分做法應該是只考慮有價值的狀態 但是還是沒想出正解,拿了70分 第四題想到了講評中說的錯誤的做法,然...