【每日一题】简单瞎搞题

简单瞎搞题

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

炸了啊,刚写完又没了!!
$$

一共个区间,每个区间任取一个数,设,求S的种类。
思路:分组背包问题,&dp[i][j]&表示前i个区间里选i个数是否能表示j,我们要求最后能表示的数的种类数,其实就是


思路:


1.既然只有两种关系,我们这里就可以用bitset容器来保存每一个状态,通过向左移来求和更新状态,通过异或来添加状态。
2.那么转移状态:
3.然后还有一些内置函数:比如reset(4),reset函数传一个参数时将参数下标处置为0。


Code:


#include<bits/stdc++.h>
#define  js  ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
using namespace std;
const int maxn=1e6+10;
bitset<maxn> dp[102];
int n,l,r;
int main() {
    js;
    cin>>n;
    dp[0].set(0);//下标为0的地方赋值为1
    for(int i=1;i<=n;i++) {
        cin>>l>>r;
        for(int j=l;j<=r;j++ ) dp[i] |= (dp[i-1]<<(j*j));
    }
    cout<<dp[n].count()<<endl;
}
每日一题 文章被收录于专栏

牛客每日一题

全部评论
看dalao你的题解长大的
点赞 回复 分享
发布于 2021-08-14 00:28

相关推荐

认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
牛客837006795号:简历抄别人的,然后再投,有反馈就是简历不行,没反馈就是学历不行,多投多改只要技术不差机会总会有的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

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