关闭

nyoj236DP动规

标签: nyoj236dp
59人阅读 评论(0) 收藏 举报
分类:

本来第一次是使用性价比来做的,样例给的几个数据都可以,但是还是判错,以后能够 注意一下。只能中规中矩的用DP了,也可以看做是背包。01背包,套路的问题,但是数据非常的大,也是没办法。背包问题详见背包九讲。

#include<iostream>
#include<cstring>
#define M 30010
#define N 30
using namespace std;
int d[M],a[N],b[N];
int main()
{
    int test,m,n,i,j;
    cin>>test;
    while(test--)
    {
        cin>>m>>n;
        for(i=1;i<=n;i++) cin>>a[i]>>b[i];
        memset(d,0,sizeof(d));
        for(i=1;i<=n;i++)
        {
            for(j=m;j>=a[i];j--)
            {
                d[j]=max(d[j],d[j-a[i]]+a[i]*b[i]);
            }
        }
        cout<<d[m]<<endl;
    }
    return 0;
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3542次
    • 积分:312
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类