每日一題~abc356(對于一串連續數字 找規律,開數值桶算貢獻)

添加鏈接描述
在這里插入圖片描述
題意:對于給定的n,m 。計算0~n 每一個數和m & 之后,得到的數 的二進制中 1的個數的和。

一位一位的算。最多是60位。
在這里插入圖片描述
我們只需要計算 在 1-n這些數上,有多少個數 第i位 為1.
因為是連續的自然數,每一位上1 的出現 必然存在某種規律。
我們從 第零位 開始計數。
第 i 位 的 1 的出現周期是 2^(i+1) ,其中前一半是0,后一半是1.(數量是 2^i個)
想明白這一點之后,
對于整除的那一部分,第i位的貢獻是

int w=(long long )1<<i;
n/(w*2)*w 

那么整的部分算完了,接下來算 散 的那一部分

這里可以自己找個例子,算一下。不然很容易錯。
max((long long )0,n%(2*w)-w+1)
#include <bits/stdc++.h>
using namespace std;
#define int long long 
const int mod=998244353;
signed main()
{int n,m;cin>>n>>m;int ans=0;for (int i=0;i<60;i++){if (m>>i &1){int w=(long long )1<<i;ans+=n/(w*2)*w+max((long long )0,n%(2*w)-w+1);ans%=mod;}}cout<<ans<<endl;return 0;
}

在這里插入圖片描述
可以注意到
ai的數值非常小,不到1e6,這個時候 就有很大可能 開數值桶。
在這里插入圖片描述

#include <bits/stdc++.h>
#define int long long 
using namespace std;
const int wc=1e6+5;
int a[wc],s[wc];signed main()
{int n;cin>>n;int t=0;for (int i=0;i<n;i++){cin>>t;a[t]++;}for (int i=1;i<=wc;i++){s[i]=s[i-1]+a[i];}int ans=0;for (int i=1;i<=wc;i++){ans+=a[i]*(a[i]-1)/2;//選擇兩個相同的數的貢獻//枚舉左端點 ,比枚舉右端點好,因為右端點不一定正好到wc,//后面可能還有一些比a[i]大的數 for (int j=i;j<=wc;j+=i){ans+=a[i]*(j/i)*(s[min(wc,j+i-1)]-s[j==i?i:j-1]);非常優美的代碼^_^} }cout<<ans<<"\n";return 0;
}

時間復雜度: 第二層for里面,因為每次都是 i 的倍數,并且有一個上界 wc,所以是調和級數的復雜度,
復雜度為 log wc。
總的復雜度為 wc* log wc

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43352.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43352.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43352.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ICMP隧道

后臺私信找我獲取工具 目錄 ICMP隧道作用 ICMP隧道轉發TCP上線MSF 開啟服務端 生成后門木馬 msf開啟監聽 開啟客戶端icmp隧道 執行后門木馬&#xff0c;本地上線 ICMP隧道轉發SOCKS上線MSF 開啟服務端 生成后門木馬 msf開啟監聽 開啟客戶端icmp隧道 ?執行后…

鋇錸網關: 輕松實現PLC與OPC UA服務器的雙向通信

在當今工業4.0的大潮下&#xff0c;實現不同設備、系統之間的高效通信和數據交換已大勢所趨&#xff01;PLC與OPC UA服務器的對接&#xff0c;對于打造智能工廠具有重要意義&#xff0c;本文將深入探討鋇錸技術的網關如何實現這一過程&#xff0c;為用戶提供快速且低成本的解決…

Nextflow 可選輸入文件

問題 有時候存在需要 process 接收可選的輸入文件的場景。 解決方案 可以使用特殊的文件名來標記這類輸入參數&#xff0c;類似于一個 placeholder。 可以在assets中創建一個空文件: touch assets/NO_FILE示例代碼 params.inputs "$projectDir/data/prots/*{1,2,3}…

8. 隔行變色

題目描述 本題為填空題&#xff0c;只需要算出結果后&#xff0c;在代碼中使用輸出語句將所填結果輸出即可。 Excel 表的格子很多&#xff0c;為了避免把某行的數據和相鄰行混淆&#xff0c;可以采用隔行變色的樣式。 小明設計的樣式為&#xff1a;第 11 行藍色&#xff0c;…

免費聽書TV版v1.0.1

使用非常穩定流暢&#xff0c;UI界面設計美觀簡潔&#xff0c;純凈無廣。資源雖然不是特別多&#xff0c;但是日常聽書還是可以滿足需求。 完全免費&#xff0c;操作簡單方便&#xff0c;安裝即用&#xff0c;沒有任何限制。 可以適配遙控器操作&#xff0c;OK鍵開啟或關閉語…

Qt編程技巧小知識點(1)TCP緩存區數據讀取

文章目錄 Qt編程技巧小知識點&#xff08;1&#xff09;TCP緩存區數據讀取小結 Qt編程技巧小知識點&#xff08;1&#xff09;TCP緩存區數據讀取 TCP的socket對內存進行讀取&#xff08;使用socket->readall()&#xff09;的時候輸出的內容有時會進行局部倒置&#xff0c;其…

ORACLE 數據庫ADG切換

主備庫切換 一、Switchover 方式切換 一般SWITCHOVER切換都是計劃中的切換,特點是在切換后,不會丟失任何的數據,而且這個過程是可逆的,整個DATA GUARD環境不會被破壞,原來DATA GUARD環境中的所有物理和邏輯STANDBY都可以繼續工作。 在進行DATA GUARD的物理STANDBY切換前…

stm32單片機的分類與命名

一、Stm32單片機的分類 二、Stm32單片機的命名 例如&#xff1a;STM32F103C8T6

VUE超詳細入門

目錄 1.什么是 Vue.js 2.Vue.js 優點 Vue中的第一個hello world Vue指令 v-model v-bind v-on v-if v-show v-for Vue 實例生命周期 從傳統架構轉向單文件架構(通過組件拼接) 安裝element-ui使用 1.什么是 Vue.js Vue (讀音 /vju ? /&#xff0c;類似于 view) 是…

GPT-5要來了?我的博士生“AI朋友”!

GPT-5 一年半后發布&#xff1f;對此你有何期待&#xff1f; IT之家6月22日消息&#xff0c;在美國達特茅斯工程學院周四公布的采訪中&#xff0c;OpenAI首席技術官米拉穆拉蒂被問及GPT-5是否會在明年發布&#xff0c;給出了肯定答案并表示將在一年半后發布。此外&#xff0c;…

Vue2-動畫

1.transition過渡 過渡組件&#xff1a;進入/離開 & 列表過渡 — Vue.js [用transition做CSS動畫]Enter狀態&#xff1a;JS Bin - Collaborative JavaScript Debugging Leave狀態&#xff1a;JS Bin - Collaborative JavaScript Debugging 2. animation動畫 用animation做…

ABAP:會計憑證批量導入(資產數據,獲利能力段)

會計憑證導入會涉及到總賬、客戶、供應商、金額 、自定義字段增強、獲利能力段 *&---------------------------------------------------------------------* *& Report ZFIE014 *&---------------------------------------------------------------------* *&…

關于數組的常見算法

一、案例一 案例說明 案例&#xff1a;定義一個int型的一維數組&#xff0c;包含10個元素&#xff0c;分別賦一些隨機整數&#xff0c;然后求出所有元素的最大值&#xff0c;最小值&#xff0c;總和&#xff0c;平均值&#xff0c;并輸出出來 要求&#xff1a;所有隨機數都是兩…

5-3.損失函數

文章最前&#xff1a; 我是Octopus&#xff0c;這個名字來源于我的中文名–章魚&#xff1b;我熱愛編程、熱愛算法、熱愛開源。所有源碼在我的個人github &#xff1b;這博客是記錄我學習的點點滴滴&#xff0c;如果您對 Python、Java、AI、算法有興趣&#xff0c;可以關注我的…

Nginx -Web服務器/反向代理/負載均衡

文章目錄 一、web服務1.1 nginx安裝1.2 配置文件1.3 Nginx處理Web機制 二、反向代理三、負載均衡3.1 分類3.2 負載相關配置文件3.3 keepalive 提高吞吐量3.4 配置瀏覽器緩存 附、JMeter性能測試工具 以賽促學內容,大概率感覺會使用nginx做web服務,特對nginx做總結歸納. Nginx是…

(7.10)Java面向對象有關知識點思考

1、繼承中要關注如何訪問父類中的方法&#xff0c;其中有傳遞一個隱藏的形參this&#xff0c;及當前對象的地址&#xff0c;通過它調用方法沒有問題。 2、抽象時對繼承關系的一種優化&#xff1a; ①父類中的方法可以沒有方法體&#xff1b; ②子類必須按照規定重寫抽象方法…

【性能工程 - eBPF 技術】小白也能學會的 eBPF 技術——初步了解 eBPF 技術(一)

eBPF&#xff0c;即擴展的伯克利包過濾器&#xff08;Extended Berkeley Packet Filter&#xff09;&#xff0c;是從早期的BPF技術發展而來&#xff0c;起初用于高效地過濾網絡數據包。隨著時間的推移&#xff0c;eBPF已經成為一個強大的、靈活的內核技術&#xff0c;不僅限于…

echart5.5.1版本,倒三角柱狀圖

加載方法 initChart1(title, id, tag) {var myChart echarts5.init(this.$refs[id]);const _this this;var option {title:{text: title||"",show: title?true:false,top: 24,left: 24},grid:{left: 54,top: 74,bottom: 44,right: 30,},xAxis: {type: category,d…

【Spring成神之路】老兄,來一杯Spring AOP源碼嗎?

文章目錄 一、引言二、Spring AOP的使用三、Spring AOP的組件3.1 Pointcut源碼3.2 Advice源碼3.3 Advisor源碼3.4 Aspect源碼 四、Spring AOP源碼刨析4.1 configureAutoProxyCreator源碼解析4.2 parsePointcut源碼解析4.3 parseAdvisor源碼解析4.4 parseAspect源碼解析4.5 小總…

電腦缺少dll文件是怎么回事?教你5種有效的解決方法

當您的計算機顯示DLL文件已經遺失時&#xff0c;您應如何應對呢&#xff1f;實際上&#xff0c;針對此類DLL文件的處置過程相對來說較為簡易。今日&#xff0c;我們在此為大家詳細介紹此領域的相關知識&#xff0c;讓大家輕松解決電腦中因丟失DLL文件而產生的問題。 一、關于DL…