第二题 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,这道题其实是送分的。