以下の内容はhttps://kagamiz.hatenablog.com/entry/2013/09/04/181359より取得しました。


Typical DP Contest A - コンテスト

問題文 : コンテスト


解法 :
dp[x] : 得点x を得ることが出来るか? としてDP. dp[x] が真⇒dp[x + a[i]] が真となる事を利用してO(N*sum) で計算可能.

コード :

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cctype>
#include <cassert>
#include <vector>
#include <algorithm>
#include <string>
#include <stack>
#include <queue>
#include <deque>
#include <list>
#include <set>
#include <map>

using namespace std;

int dp[10001];

int main()
{
	int N;
	scanf("%d", &N);
	
	dp[0] = 1;
	for (int i = 0; i < N; i++){
		int a;
		scanf("%d", &a);
		
		for (int j = 10000; j >= a; j--)
			if (dp[j - a]) dp[j] = 1;
	}
	
	int ans = 0;
	for (int i = 0; i <= 10000; i++) ans += dp[i];
	
	printf("%d\n", ans);
	return (0);
}



以上の内容はhttps://kagamiz.hatenablog.com/entry/2013/09/04/181359より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14