第二题 bfw和zhk的故事

第二题 bfw和zhk的故事

这总算是真正的动规了,因为有些同学看不懂,所以给大家了提示:只有当赵海鲲和毕凡雯的智商大于ai是,才能做题,然后智商下降,同时也可以选择不做。
求的是赵海鲲最大限度做的题数-毕凡雯最大限度做的题数

那么根据贪心算法,我们应该对ai进行排序

显然需要用到优秀的结构体,然后进行排序

dp的方程式其实就是一个背包罢了

dp[j]=max(dp[j-a[i].b]+1,dp[j]);

dp方程有了,那边界条件呢?对了你猜对了,全赋值为0。

dp方程有了,边界条件有了,代码也有了吧。

#include <bits/stdc++.h>
using namespace std;
int dp[1010],dq[1010];
struct node{
	int a,b,c;
}a[25];
bool cmp(node a,node b){
	a.a>b.a;
}
int main(){
    int x,y,m;    
    scanf("%d%d%d",&x,&y,&m);
    for(int i=1;i<=m;i++)scanf("%d%d%d",&a[i].a,&a[i].b,&a[i].c);
    sort(a+1,a+m+1,cmp);
    for(int i=1;i<=m;i++){
        for(int j=x;j>=a[i].a;j--)dp[j]=max(dp[j-a[i].b]+1,dp[j]);
        for(int j=y;j>=a[i].a;j--)dq[j]=max(dq[j-a[i].c]+1,dq[j]);
    }int ans1=dp[x],ans2=dq[y];
    cout<<ans1-ans2;
    return 0;
}

本题只有两个数据,其中一个数据是样例,如果你不排序也能AC,这道题其实是送分的。

原文地址:https://www.cnblogs.com/zhaohaikun/p/12817004.html