博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
牛客练习赛16 E求值
阅读量:4315 次
发布时间:2019-06-06

本文共 1087 字,大约阅读时间需要 3 分钟。

题目描述

给定n个数字a
1, a
2, ..., a
n
定义f(l, r) = a
l | a
l+1| ... | a
r
现在枚举(1 <= l <= r <= n),问不同的f值一共有多少个。

输入描述:

第一行一个整数n表示数组大小 (1 <= n <= 100,000); 第二行n个整数满足0 <= a
i
<= 1000,000。

输出描述:

输出一个整数表示不同的f值一共有多少个。
示例1

输入

31 2 0

输出

4
示例2

输入

101 2 3 4 5 6 1 2 9 10

输出

11 每输入一个数xi,就在前面的基础上算。前面有多少个是在1-(i-1),2-(i-1)....
1 #include 
2 using namespace std; 3 const int N = 2e6+10; 4 set
st[2]; 5 bool vis[N]; 6 int x, n, last, ans; 7 int main() { 8 cin >> n; 9 for(int i = 1; i <= n; i ++) {10 cin >> x;11 last = 1 - last;12 st[last].clear();13 set
:: iterator it = st[1-last].begin();14 for(; it != st[1-last].end(); ++ it) {15 int y = (*it)|x;16 vis[y] = true;17 st[last].insert(y);18 }19 st[last].insert(x);20 vis[x] = true;21 }22 for(int i = 0; i < N; i ++) if(vis[i]) ans++;23 cout << ans << endl;24 return 0;25 }

 

转载于:https://www.cnblogs.com/xingkongyihao/p/8969678.html

你可能感兴趣的文章
Linux系统安装出错后出现grub rescue的修复方法
查看>>
线段树模板整理
查看>>
[教程][6月4日更新]VMware 8.02虚拟机安装MAC lion 10.7.3教程 附送原版提取镜像InstallESD.iso!...
查看>>
[iOS问题归总]iPhone上传项目遇到的问题
查看>>
Python天天美味(总) --转
查看>>
Spring Framework tutorial
查看>>
【VS开发】win7下让程序默认以管理员身份运行
查看>>
【机器学习】Learning to Rank 简介
查看>>
Unity 使用实体类
查看>>
【转】通过文件锁实现,程序开始运行时,先判断文件是否存在,若存在则表明该程序已经在运行了,如果不存在就用open函数创建该文件,程序退出时关闭文件并删除文件...
查看>>
MySQL常见注意事项及优化
查看>>
流畅的Python (Fluent Python) —— 前言
查看>>
Jquery-menu-aim流畅的菜单滑动体验
查看>>
Jquery EasyUI修改行背景的两种方式
查看>>
生成器模式(Builder)C++实现
查看>>
Centos 7.5安装 Redis 5.0.0
查看>>
嵌入式Linux学习笔记(0)基础命令。——Arvin
查看>>
二分图匹配
查看>>
c++ 模板template
查看>>
javascript中的string对象
查看>>