简单瞎搞题(bitset暴力)

简单瞎搞题

https://ac.nowcoder.com/acm/problem/17193


题目:

一共有 n个数,第 i 个数是 xi
xi 可以取 [li , ri] 中任意的一个值。
,求 S 种类数。
1 ≤ n , li , ri ≤ 100


做法:

建个1e6的bitset。从1到n枚举每个数的取值。用bitset左移k位表示前面能表示的所有数+k。就这样直接暴力就行了。


代码:

#include <bits/stdc++.h>
#define IOS ios::sync_with_stdio(false), cin.tie(0)
#define debug(a) cout << #a ": " << a << endl
using namespace std;
typedef long long ll;
const int N = 1e6 + 7;
bitset<N> ans, tmp, zero;
int main(void){ 
    IOS;
    int n; cin >> n;
    ans[0] = 1;
    for (int i = 1; i <= n; ++i){
        int l, r; cin >> l >> r;
        tmp = ans; ans = zero;
        for (int j = l; j <= r; ++j){
            ans |= (tmp << (j*j));
        }
    }
    int cnt = 0;
    for (int i = 0; i < N; ++i){
        if (ans[i] == 1) cnt++;
    }
    cout << cnt << endl;
    return 0;
}
全部评论

相关推荐

03-03 23:12
已编辑
北京邮电大学 Java
书海为家:我来给一点点小建议,因为毕竟还在学校不像工作几年的老鸟有丰富的项目经验,面试官在面试在校生的时候更关注咱们同学的做事逻辑和思路,所以最好在简历中描述下自己做过项目的完整过程,比如需求怎么来的,你对需求的解读,你想到的解决办法,遇到困难如何找人求助,最终项目做成了什么程度,你从中收获了哪些技能,你有什么感悟。
你的简历改到第几版了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务