【每日一题】5月20日 简单瞎搞题

简单瞎搞题

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

一共有 n个数,第 i 个数是 xi
 xi 可以取 中任意的一个值。
图片说明 ,求 S 种类数。

分析:分组背包问题,图片说明的值表示前i个数是否能表示j, 我们要求最后能表示的数的种类数,就是求
图片说明 .
考虑每一个dp状态只有两种0和1.那么我们可以用bitset优化背包,将第二维的值变成二进制下1的位置.那么转移状态:
图片说明 .
那么最后的答案就是图片说明 的1的个数,直接调用count()计算即可。
另外附一题同样的bitset背包优化的题.

https://ac.nowcoder.com/acm/contest/4912/C
题解暂时鸽了

#include<bits/stdc++.h>
using namespace std;

const int maxn=1e6+10;

bitset<maxn> dp[102];
int n;

int main()
{
    scanf("%d",&n);dp[0].set(0);
    for( int i=1;i<=n;i++ )
    {
        int l,r;scanf("%d%d",&l,&r);
        for(int j=l;j<=r;j++ ) dp[i] |= (dp[i-1]<<(j*j));
    }
    printf("%d\n",dp[n].count());
}
每日一题 文章被收录于专栏

每日一题

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 18:13
点赞 评论 收藏
分享
那一天的Java_J...:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
哥_留个offer先:跟他说,你这个最好用c#,微软就用c#Java不适合这个项目
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-01 17:13
想去,但是听说加班强度实在难崩,所以拒绝了,现在有点心梗对面hr感觉也是实习生,打电话的时候怪紧张的,但是感觉人很好嘞
水中水之下水道的鼠鼠:哥们这不先去体验一下,不行再跑呗,大不了混个实习经历(有更好的转正offer就当我没说)
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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