「题解」LOJ #515. 「LibreOJ β Round #2」贪心只能过样例

题目

#515. 「LibreOJ β Round #2」贪心只能过样例

简化题意

给你 \(n\) 个数的取值范围 \(x_i \in [a_i, b_i]\)

\(\sum\limits_{i = 1}^{n} x_i\) 有多少种不同的取值。

思路

背包$ \ + \ bitset$ 科技。

还不明白,我背包问题很拉胯。。。

Code

#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <algorithm>
#include <bitset>
#define MAXN 1000001

int n;
std::bitset<MAXN> ans[101];

int main() {
    scanf("%d", &n);
    ans[0] = 1;
    for (int i = 1, l, r; i <= n; ++i) {
        scanf("%d %d", &l, &r);
        for (int j = l; j <= r; ++j) {
            ans[i] |= (ans[i - 1] << (j * j));
        }
    }
    printf("%d\n", ans[n].count());
    return 0;
}
posted @ 2020-09-02 21:56  yu__xuan  阅读(131)  评论(0编辑  收藏  举报