题目1494:Dota

来源:互联网 发布:金石软件破解版 编辑:程序博客网 时间:2024/06/07 05:09

学习完全背包

// 题目1494:Dota.cpp: 主项目文件。#include "stdafx.h"#include <cstdio>#include <cstring>#define max(a,b) a>b?a:bconst int N=203;int value[N],volumn[N];const int M=1003;int dp[M];int main(){    int n,m,totalVolumn;while(~scanf("%d%d%d",&n,&m,&totalVolumn)){memset(dp,0,sizeof(dp));for(int i=1;i<=n;i++)scanf("%d%d",&volumn[i],&value[i]);for(int i=1;i<=m;i++){int num;scanf("%d",&num);int nVol=0,nVal=0;while(num--){int temp;scanf("%d",&temp);nVol+=volumn[temp];nVal+=value[temp];}int more;scanf("%d",&more);nVal+=more;volumn[n+i]=nVol;value[n+i]=nVal;}for(int i=1;i<=n+m;i++){for(int j=volumn[i];j<=totalVolumn;j++)dp[j]=max(dp[j],dp[j-volumn[i]]+value[i]);}printf("%d\n",dp[totalVolumn]);}    return 0;}


原创粉丝点击