全部WA了 (为什么要先dp呢)求思路
查看原帖
全部WA了 (为什么要先dp呢)求思路
1063541
ivan11楼主2023/10/1 16:47
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string>
#include<cmath>
#define int long long
using namespace std;
struct work{
	int time;
	int price;
} w[15];
int n,t[15],m,k,r,dp[15][155];
bool cmp(work a,work b);

signed main(){
	scanf("%lld%lld%lld%lld",&n,&m,&k,&r);
	for(int i=1;i<=n;++i) scanf("%lld",&t[i]);
	for(int i=1;i<=m;++i) scanf("%lld",&w[i].time);
	for(int i=1;i<=m;++i) scanf("%lld",&w[i].price);
	sort(w+1,w+m+1,cmp);
	for(int i=1;k>0;++i){
		k-=w[i].price;
		r-=w[i].time;
	}
	for(int i=1;i<=n;++i){
		for(int j=0;j<=r;++j){
			dp[i][j]=max(dp[i-1][j],dp[i-1][j-t[i]]+1);
		}
	}
	printf("%lld",dp[n][r]);
	return 0;
}
bool cmp(work a,work b){
	if(a.time!=b.time) 
		return a.time<b.time;
	return a.price>b.price;
}
2023/10/1 16:47
加载中...