樹狀數組 + 位運算 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.pswp.cn/news/285584.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285584.shtml
英文地址,請注明出處:http://en.pswp.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;先上…