树状数组 + 位运算 LA 4013 A Sequence of Numbers

 

题目传送门

题意:n个数,两种操作,一是每个数字加x,二是查询& (1 << T) == 1 的个数

分析:因为累加是永远的,所以可以离线处理。树状数组点是c[16][M] 表示数字x%(1 << j) 后的数字pos,考虑第j位的个数。当询问时根据add不同的值不同的处理情况。

#include <bits/stdc++.h>
using namespace std;typedef long long ll;
const int N = 1e5 + 5;
const int R = (int) 1 << 16;
const int M = R + 10;
struct BIT  {int c[16][M];void init(void) {memset (c, 0, sizeof (c));}void updata(int b, int pos) {pos++;  //pos 可能等于0while (pos < M)   {c[b][pos] += 1;pos += pos & -pos;}}int sum(int b, int pos) {pos++;int ret = 0;while (pos > 0) {ret += c[b][pos];pos -= pos & -pos;}return ret;}
}bit;int main(void)  {int n, cas = 0;while (scanf ("%d", &n) == 1)   {if (n == -1)    break;bit.init ();for (int x, i=0; i<n; ++i) {scanf ("%d", &x);for (int j=0; j<16; ++j)    {bit.updata (j, x % (1 << (j + 1)));}}ll add = 0, ans = 0; char str[2];while (scanf ("%s", &str) == 1) {if (str[0] == 'E')  break;if (str[0] == 'C')  {       //离线int x;  scanf ("%d", &x);add += x;if (add >= R)   add %= R;}else    {int t;  scanf ("%d", &t);int tail = add % (1 << t);if (add & (1 << t))    {        //(1<<t)位上已经有1ans += bit.sum (t, (1 << t) - 1 - tail);        //+tail 之前之后,都是0ans += bit.sum (t, (1 << (t + 1)) - 1) - bit.sum (t, (1 << (t + 1)) - 1 - tail);    //+tail 之前1,之后0}else    {ans += bit.sum (t, (1 << (t + 1)) - 1 - tail) - bit.sum (t, (1 << t) - 1 - tail);   //+tail 之后1}}}printf ("Case %d: %lld\n", ++cas, ans);}return 0;
}

  

 

转载于:https://www.cnblogs.com/Running-Time/p/5221529.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【地理信息系统GIS】教案(七章全)第七章:3S技术综合应用

文章目录 第一节 3S技术概述第二节 GIS与RS的综合应用第三节 GIS与GPS的综合应用第四节 网络GIS的综合应用第一节 3S技术概述 1.什么是“3S” 技术? 遥感(Remote Sensing ,RS); 地理信息系统(Geographical information System ,GIS); 全球定位系统(Global Positio…

初级图像混合——线性混合操作

addWeighted函数 这个函数的作用是&#xff0c;计算两个数组&#xff08;图像阵列&#xff09;的加权和。原型如下&#xff1a; void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype-1); 第一个参数&am…

C语言九十九之实现一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 一、题目 一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多…

【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(一)

【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(一) 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(二) 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(三) 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(四) 【专升本计算机】2021…

快速掌握 ASP.NET 身份认证框架 Identity - 通过邮件重置密码

这是 ASP.NET Core Identity 系列的第四篇文章&#xff0c;上一篇文章讲解了如何在 ASP.NET Core Identity 中实现用户登录与登出。这篇文章讲一讲如何在 ASP.NET Core Identity 中通过邮件服务实现用户账号的密码重置。点击上方或后方蓝字&#xff0c;阅读 ASP.NET Core Ident…

[.net 面向对象程序设计深入](4)MVC 6 —— 谈谈MVC的版本变迁及新版本6.0发展方向...

[.net 面向对象程序设计深入]&#xff08;4&#xff09;MVC 6 ——谈谈MVC的版本变迁及新版本6.0发展方向 1.关于MVC 在本篇中不再详细介绍MVC的基础概念&#xff0c;这些东西百度要比我写的全面多了&#xff0c;MVC从1.0到5.0的时间也不短了&#xff0c;很多人只是按照范例去使…

C语言试题101之输入三个整数 x,y,z,请把这三个数由小到大输出

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:输入三个整数 x,y,z,请把这三个数由小到大输出 分析:想办法把最小的数放到 x 上,先…

[转]史上最全的后端技术大全,你都了解哪些技术呢?

导语&#xff1a;工欲善其事&#xff0c;必先利其器&#xff1b;士欲宣其义&#xff0c;必先读其书。后台开发作为互联网技术领域的掌上明珠&#xff0c;一直都是开发者们的追逐的高峰。本文将从后台开发所涉及到的技术术语出发&#xff0c;基于系统开发、架构设计、网络通信等…

【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(二)

【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(一) 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(二) 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(三) 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(四) 【专升本计算机】2021…

DB2错误码信息

00 完全成功完成 表 3 01 警告 表 4 02 无数据 表 5 07 动态 SQL 错误 表 6 08 连接异常 表 7 09 触发操作异常 表 8 0A 功能部件不受支持 表 9 0D 目标类型规范无效 表 10 0F 无效标记 表 11 0K RESIGNAL 语句无效 表 12 0N SQL/XML 映射错误 表 13 20 找不到 CASE…

WPF 开源控件库Extended WPF Toolkit介绍(经典)

01—Extended WPF Toolkit介绍Extended WPF Toolkit 可以说是WPF Toolkit 的一个补充&#xff0c;Extended WPF Toolkit包含了标准的WPF Toolkit里没有的Windows Presentation Foundation&#xff08;WPF&#xff09;控件、工具和组件。Extended WPF Toolkit是创建下一代Window…

vi和vim 的常用操作

&#xff1a;q! 强制退出 到文件末尾: ESC shift G : 到文件头: G G&#xff1a; 整块模式 快捷键 【不使用鼠标&#xff0c;来选择块】 v 字符选择&#xff0c;会将光标经过的地方反白选择&#xff01;V(大写) 行选择&#xff0c;会将光标经过…

C语言试题102之用*号输出字母 C 的图案

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:用号输出字母 C 的图案 分析:可先用’号在纸上写出字母 C,再分行输出。 2 、温馨提…

【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(三)

【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(一) 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(二) 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(三) 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(四) 【专升本计算机】2021…

WPF 用代码实现WrapPanel右侧自动对齐(解决多余空白问题)

未处理前效果&#xff1a; 处理后效果&#xff1a; <Border Background"{StaticResource BorderBg}" BorderThickness"2" BorderBrush"{StaticResource BorderBrush}" CornerRadius"5" Padding"5" x:Name"SvK…

.NET 中的引用程序集

.NET 中的引用程序集Intro在 .NET 里有一种特殊的程序集叫做 ReferenceAssembly(引用程序集)&#xff0c;引用程序集&#xff08;Reference Assemblies&#xff09; 是一种特殊类型的程序集&#xff0c;它只包含表示库的公共 API 所需的最少元数据量。它们包括在生成工具中引用…

【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(四)

【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(一) 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(二) 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(三) 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(四) 【专升本计算机】2021…

14.6.3.1 The InnoDB Buffer Pool

14.6.3.1 The InnoDB Buffer PoolInnoDB 保持一个存储区域被称为buffer pool 用于cache数据和索引在内存里,知道InnoDB buffer pool 如何工作,利用它来保持频繁访问的数据在内存里,是MYSQL 调优的一个重要方面。你可以配置InnoDB buffer pool的各个方面来改善性能:理想情况下,你…

C语言试题105之要求输出国际象棋棋盘

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:要求输出国际象棋棋盘。 分析:用 i 控制行,j 来控制列,根据 i+j 的和的变化来控制…

一个js的动画,以前以为只有flash可以实现

11年刚干这行的时候&#xff0c;看到这种什么百叶窗的动画&#xff0c;以为都是flash实现的&#xff0c;最近突然灵光一闪&#xff0c;想到了用js实现&#xff08;虽然我不是做前端的&#xff0c;本人做.net&#xff09;。代码虽然实现了&#xff0c;但是比较乱&#xff0c;先上…