zoj 4019 动态规划
2018-04-08 17:39
309 查看
#include<cstdio> #include<algorithm> using namespace std; typedef long long ll; const int MAXN=2020; int k1,k2,c; int n,m; int a[MAXN],b[MAXN]; ll prea[MAXN],preb[MAXN]; ll dp[MAXN][MAXN]; int main() { int T; scanf("%d",&T); while(T--){ scanf("%d%d%d%d%d",&k1,&k2,&c,&n,&m); for(int i=1;i<n+1;i++) scanf("%d",&a[i]); for(int i=1;i<m+1;i++) scanf("%d",&b[i]); sort(a+1,a+n+1); sort(b+1,b+m+1); for(int i=1;i<n+1;i++) prea[i]=prea[i-1]+a[i]; for(int i=1;i<m+1;i++) preb[i]=preb[i-1]+b[i]; ll ans=0; for(int i=1;i<n+1;i++){ if(prea[i]>c) break; dp[i][0]=dp[i-1][0]+k1*(c-prea[i]); ans=max(ans,dp[i][0]); } for(int i=1;i<m+1;i++){ if(preb[i]>c) break; dp[0][i]=dp[0][i-1]+k2*(c-preb[i]); ans=max(ans,dp[0][i]); } for(int i=1;i<n+1;i++) for(int j=1;j<m+1;j++){ if(prea[i]+preb[j]>c) break; dp[i][j]=max(dp[i-1][j]+k1*(c-prea[i]-preb[j]), dp[i][j-1]+k2*(c-prea[i]-preb[j])); ans=max(ans,dp[i][j]); } printf("%lld\n",ans); } return 0; }
相关文章推荐
- CQBZOJ - 2916 学生宿舍 动态规划(DP) 重庆一中高2018级竞赛班第十次测试 2016.9.16 Problem 1
- ZOJ 1353 Unimodal Palindromic Decompositions(动态规划)
- ZOJ 1563 Pearls(动态规划)
- zoj 动态规划几题(简单)
- [ZOJ 3352] Boring Board Game [动态规划]
- zoj 1563 Pearls 动态规划
- ZOJ 1027 Human Gene Functions(动态规划LCS)
- ZOJ 3123 Subsequence (动态规划)
- zoj 1163 The Staircases 动态规划(dp)
- zoj 4011 Happy Sequence(动态规划)
- ZOJ 1108 FatMouse's Speed 动态规划
- ZOJ 3719 Diablo III 动态规划
- zoj-1025 Wooden Sticks有关贪心和动态规划
- ZOJ1093 动态规划
- zoj 4019(2018浙大赛 F.Schrödinger's Knapsack)
- ZOJ 1602 Multiplication Puzzle(动态规划)
- ZOJ-3697 Bad-written Number 恶心模拟-状态压缩-动态规划
- 【动态规划】zoj Course Selection System
- zoj 1025 Wooden Sticks 贪心 + 动态规划
- ZOJ-3872Beauty of Array (动态规划)