本文主要是介绍牛客练习赛22-C-简单瞎搞题(bitset),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
链接:https://www.nowcoder.com/acm/contest/132/C
来源:牛客网
题目描述
一共有 n个数,第 i 个数是 xi
xi 可以取 [li , ri] 中任意的一个值。
设 ,求 S 种类数。
输入描述:
第一行一个数 n。 然后 n 行,每行两个数表示 li,ri。
输出描述:
输出一行一个数表示答案。
示例1
输入
复制
5 1 2 2 3 3 4 4 5 5 6
输出
复制
26
备注:
1 ≤ n , li , ri ≤ 100
题解:经分析知,总共只有不超过100万种情况,考虑开一个100万大小的bitset来计算。
#include<bitset>
#include<stdio.h>
using namespace std;
bitset<1000005>ans,tmp;
int n,l,r;
int main(void)
{ans[0]=1;scanf("%d",&n);for(int i=1;i<=n;i++){tmp.reset();scanf("%d%d",&l,&r);for(int j=l;j<=r;j++)tmp=tmp|(ans<<j*j);ans=tmp;}printf("%d\n",ans.count());return 0;
}
这篇关于牛客练习赛22-C-简单瞎搞题(bitset)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!