2017百度之星资格赛 1003 度度熊与邪恶大魔王
2017-08-05 18:46
337 查看
#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> using namespace std; typedef long long ll; const int INF=0x3f3f3f3f; ll a[120000],b[120000]; ll k[1200],p[1200]; ll dp[1200][22]; int main() { int n,m; while(cin>>n>>m) { for(int i=0;i<n;i++) scanf("%d%d",&a[i],&b[i]); ll maxp=0; for(int i=0;i<m;i++) { scanf("%d%d",&k[i],&p[i]); maxp=max(maxp,p[i]); } int flag=0; for(int i=0;i<n;i++) { if(b[i]>=maxp){ flag=1; break; } } if(flag){ puts("-1"); continue; } memset(dp,INF,sizeof(dp)); for(int j=0;j<=12;j++) dp[0][j]=0; for(int x=0;x<m;x++) { for(int j=0;j<=10;j++) for(int i=0;i<=1000;i++) { if(p[x]<=j)continue; if(i<=p[x]-j) dp[i][j]=min(dp[i][j],k[x]); else if(dp[i][j]>dp[i-(p[x]-j)][j]+k[x]) dp[i][j]=dp[i-(p[x]-j)][j]+k[x]; } } ll sum=0; for(int i=0;i<n;i++) { sum+=dp[a[i]][b[i]]; } cout<<sum<<endl; } return 0; }
相关文章推荐
- 2017百度之星 资格赛 1003 度度熊与邪恶大魔王(dp)
- 百度之星资格赛1003 度度熊与邪恶大魔王(dp)--2017
- 2017百度之星资格赛1003 度度熊与邪恶大魔王(完全背包)
- 2017百度之星资格赛 1003 度度熊与邪恶大魔王(DP 完全背包)
- 2017百度之星资格赛:1003. 度度熊与邪恶大魔王
- 2017百度之星资格赛 1003 度度熊与邪恶大魔王
- 2017百度之星资格赛 1003 度度熊与邪恶大魔王(完全背包)
- 2017百度之星资格赛 1003 度度熊与邪恶大魔王(DP)
- 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)
- 2017"百度之星"程序设计大赛-资格赛-1003-度度熊与邪恶大魔王
- 【2017“百度之星”程序设计大赛-资格赛】度度熊与邪恶大魔王
- 百度之星资格赛1003 度度熊与邪恶大魔王
- 【2017"百度之星"程序设计大赛资格赛 1003】度度熊与邪恶大魔王(DP 背包问题)
- 2017"百度之星"程序设计大赛 - 资格赛 1003 度度熊与邪恶大魔王(带题解)
- 2017"百度之星"程序设计大赛 - 资格赛:1003 度度熊与邪恶大魔王
- 2017"百度之星"程序设计大赛 - 资格赛-1003-度度熊与邪恶大魔王
- 2017百度之星资格赛—1003度度熊与邪恶大魔王
- [刷题]2017百度之星资格赛 - 度度熊与邪恶大魔王
- 【2017"百度之星"程序设计大赛 - 资格赛】 度度熊与邪恶大魔王
- 百度之星资格赛1003:度度熊与邪恶大魔王