[원]hdu 2191 512 문 천 대지 진 사망 동 포 를 추모 합 니 다.지금 을 소 중 히 여기 고 감사 하 는 삶(이것 은 제목 이름 일 뿐)(다 중 가방)

본문 은 다음 과 같다.http://blog.csdn.net/svitter
원제:http://acm.hdu.edu.cn/showproblem.php?pid=2191
제목:다 중 가방 문제.01 가방 해로 전환.다 중 가방 이 01 가방 으로 바 뀌 는 관건 은 건 수 를 전체 에서 고립 시 켜 새로운 개체 로 만 드 는 것 이다.분류 에 상 관 없 이 몇 가지 가 있 든 몇 가지 가 있다 는 것 이다.
AC 코드:
//============================================================================
// Name        :     .cpp
// Author      :
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <stdio.h>
#include <string.h>

using namespace std;
#define max(a,b) a > b ? a : b

struct Rice{
	int pr;
	int val;
};

int f[110];
Rice r[4000];

void ace(){
	//work point
	int t, i , j ,k;

	//num
	int n, m;
	int p, h, c;
	int num;//   01      

	scanf("%d", &t);
	while(t--){
		memset(f, 0, sizeof(f));
		scanf("%d%d", &n, &m);

        num = 0;
		for(i = 0; i < m; i++){
			scanf("%d%d%d", &p, &h, &c);
			for(j = num; j < num + c; j++){
				r[j].pr = p;
				r[j].val = h;
			}
			num = j;
		}

		//     
		for(i = 0; i < num; i++){
			for(j = n; j >= r[i].pr; j--){
				f[j] =  max(f[j], f[j - r[i].pr] + r[i].val);
			}
		}

		printf("%d
", f[n]); } } int main() { ace(); return 0; }

저자:svitter 발표 2014-5-3 9:28:44 원문 링크
댓 글

좋은 웹페이지 즐겨찾기