HDU 3466 [DP 입문 01 가방]

1140 단어
나는 내가 의식이 흐리멍덩하고 같은 실수를 두 번 저질렀다고 생각한다.
오류는 다음과 같습니다.
(1) 상태 이동 방정식은 항상 dp[j-a[i]를 옮긴다.p]+a[i].v의 j는 m로 쓰이고 i는 j로 쓴다
이 문제:
아이템 수량 N과 수중 자금 M 제시
그리고 각 물품마다 가격 P를 주고 구매가 필요할 때 수중에 최소한 얼마의 자금이 필요한지 Q.현재 물품에 있는 당신의 돈 P는 반드시 Q보다 커야 합니다(따라서 P-Q<0의 것은 고려하지 않습니다).그리고 물건 자체의 가치 V
요구할 수 있는 최대 자금을 구하다
유일한 구덩이는 P-Q 서열입니다.
구조체로 하면 된다.제목에서 얼마 안 돼서 살 수 없다는 조건을 구조체가 보증했기 때문에 밥카드와 비슷하다
	#include <iostream>
	#include <cstring>
	#include <algorithm>
	using namespace std ;
	struct node {
		int p , q , v ;
	}a[4000];
	int dp[5000];
	int cmp(node x ,node y)
	{
		return x.q-x.p<y.q-y.p;
	}
	
	int main()
	{
		int n , m , j , i;
		while(cin>>n>>m)
		{
			for(i=0;i<n;i++)
			{
				cin>>a[i].p>>a[i].q>>a[i].v;
			}
			sort(a,a+n,cmp);
			memset(dp,0,sizeof(dp));
			for(i=0;i<n;i++)
			{
				for(j=m;j>=a[i].q;j--)
				{
					if(dp[j]<dp[j-a[i].p]+a[i].v)
					{
						dp[j]=dp[j-a[i].p]+a[i].v;
					}
				}
			}
			cout<<dp[m]<<endl;
		}
		return 0 ;
		
	}

여러분, 안녕히 주무세요. QWQ 졸려 죽겠어요. 자동으로 빨개져요...


좋은 웹페이지 즐겨찾기