今天比賽上這道題好像是人均題呀。
好吧,就乙個簡單的,連優化都不需要的揹包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 輪遊戲中的收益和最...