BJOI2019 排兵布陣

2021-10-01 18:54:23 字數 653 閱讀 5074

今天比賽上這道題好像是人均題呀。

好吧,就乙個簡單的,連優化都不需要的揹包dp。

我們每次只需要處理在比第i個城堡的第j大的玩家大的情況,不必把所有的兵的情況都處理完。

然後就可以

#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

#define re register

#define gc() getchar()

templatevoid read(_t &x)

while(s>='0'&&s<='9')

x*=f;

}int s,n,m;

int a[105][105];

int dp[105][20005];

signed main()

for(int i=1;i<=n;i++)sort(a[i]+1,a[i]+s+1);

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

for(int j=m;j>0;j--)

} printf("%d\n",dp[n][m]);

return 0;

}

BJOI2019 排兵布陣 DP

題目大意 有 n 座城堡,s 輪遊戲。對於第 x 輪,第i座城堡的士兵數量為 a x i 如果你需要攻下第i座城堡,你在第i座城堡部署的士兵必須嚴格大於 2a x i 如果攻下了你會獲得 i 的收益。對於這 s 輪遊戲,你只能採用一種部署方式。下面問你應該如何部署,使得你在這 s 輪遊戲中的收益和最...

BJOI2019 排兵布陣 DP

比較好想的dp,設 dp i j 表示第 i 個城堡時,已派出 j 個士兵。決策時,貪心派出恰好嚴格大於某一玩家派出的數量的兩倍 不然浪費 我們發現又可以排序預處理出 a i j 表示第 i 個城堡,出兵數量第 j 大的人出兵數量 因為這樣可以很容易算出貢獻,即為 k times i dp轉移方程即...

BJOI2019 排兵布陣 DP

題目大意 有 n 座城堡,s 輪遊戲。對於第 x 輪,第i座城堡的士兵數量為 a x i 如果你需要攻下第i座城堡,你在第i座城堡部署的士兵必須嚴格大於 2a x i 如果攻下了你會獲得 i 的收益。對於這 s 輪遊戲,你只能採用一種部署方式。下面問你應該如何部署,使得你在這 s 輪遊戲中的收益和最...