페이지

2092번: 집합의 개수 - bounded knapsack로 풀어보기

https://www.acmicpc.net/problem/2092


#include<cstdio>
#define mod 1000000
int t, a, s, b, c[201], dp[4001] = { 1 }, r;
int main() {
    scanf("%d %d %d %d", &t, &a, &s, &b);
    for (int i = 0, x; i < a; i++) scanf("%d", &x), c[x]++;
    for (int i = 1; i <= 200; i++)
        for (int j = b; j >= 1; j--)
            for (int k = 1; k <= c[i] && j >= k; k++) dp[j] = (dp[j] + dp[j - k]) % mod;
    for (int i = s; i <= b; i++) r = (r + dp[i]) % mod;
    printf("%d", r);
    return 0;
}

댓글 없음 :

댓글 쓰기