【atcoder】習題——位元枚舉

題意:求i&M的popcount的和,i屬于0……N

主要思路還是變加為乘。

舉個例子N=22,即10110

假設M的第3位是1,分析N中:

00110

00111

00100

00101

發現其實等價于

0010

0011

0000

0001

也就是左邊第4位和第5位不變,右邊第1位和第2位不變拼接起來,相當于0000~0011

01110

01111

01100

01101

等價于:

0110

0111

0100

0101

相當于0100~0111

10110

10111

10100

10101

相當于1000~1010

最后把3個部分合一起就是0000~1010

如果M的第3位是0,比如說10010(二進制),其實等價于求01110這個二進制數

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=998244353;
ll ans,n,m;
int main(){cin>>n>>m;for(int i=0;i<60;i++){if((m>>i)&1){ll mask=(1ll<<i)-1;if((n>>i)&1){ll tmp=(n>>(i+1)<<i)|(n&mask);//左邊拼接上右邊ans=(ans+tmp+1)%mod;}	else {ll t=(n-(1ll<<i))|mask;//先把n更新一下,注意要把右邊變成最大值ll tmp=(t>>(i+1)<<i)|(t&mask);//同樣處理ans=(ans+tmp+1)%mod;}}}cout<<ans;
}

題意:共n把鑰匙m次測試,至少k把鑰匙才打開門,問滿足所有測試條件的真鑰匙的組合種類

位元枚舉:用位元表示所有真鑰匙的組合,然后保存每個測試的鑰匙狀態,滿足所有測試就是答案組合

#include <bits/stdc++.h>
using namespace std;
int keys[20];
char r[105];
int f(int x){int ct=0;while(x){if(x&1)ct++;x>>=1;}return ct;
}
int main(){int n,m,k;cin>>n>>m>>k;//n把鑰匙,m個測試,至少k把鑰匙才能打開門for(int i=0;i<m;i++){int c;cin>>c;while(c--){int a;cin>>a;keys[i]|=1<<(a-1);//把i測試用的鑰匙存起來}cin>>r[i];//最終門的狀態}int ans=0;for(int s=0;s<(1<<n);s++){//枚舉所有正確鑰匙的組合情況bool er=0;for(int i=0;i<m;i++){//看看是否滿足所有的測試用例if((f(keys[i]&s)>=k&&r[i]!='o')||(f(keys[i]&s)<k&&r[i]=='o')){er=1;break;}}ans+=!er;}cout<<ans;
}

不難發現:10101010101010101010 = 10*(1010101010101010101)

就是10*(10^0+10^2+10^4+10^6+10^8+10^10+10^12+10^14+10^16+10^18) 進行等比求和:

10*(10^20-1)/(10^2-1)

那么輸入一個N,我們計算出其長度len

就是:N*(10^0+10^len+10^len*2+10^len*3+……+10^len*n-1)

就是N*(10^len*n)/(10^len-1)

然后知識點:a/b%mod=a*b^(mod-2)%mod

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD=998244353;
ll f(ll x,ll y){x%=MOD;ll res=1;while(y){if(y&1)res=res*x%MOD;y>>=1;x=x*x%MOD;}return res;
}
ll inv(ll x){return f(x,MOD-2);
}
int main(){ll n;cin>>n;int len=(to_string(n)).size();cout<<n%MOD * (f(f(10,n),len)-1)%MOD * inv(f(10,len)-1)%MOD<<'\n';
}

題意:一共有n個店,每個店有許多口味,問能嘗到所有口味至少要去多少家店

位元枚舉:用位元來表示所有店的組合,并保存每個店提供的口味狀態,如果某個組合中可提供所有的口味就行

#include <bits/stdc++.h>
using namespace std;
int d[10];
int main(){int n,m;cin>>n>>m;//n個店,m種口味for(int i=0;i<n;i++){string s;cin>>s;for(char c:s){d[i]=(d[i]<<1)+(c=='o');//保存第i個店賣的口味狀態}}int an=100;for(int i=0;i<(1<<n);i++){//枚舉所有的店的組合int now=0,cnt=0;for(int j=0;j<n;j++){if((i>>j)&1)now|=d[j],cnt++;//把組合中的每個店賣的東西都合并起來}if(now==(1<<m)-1)an=min(an,cnt);//如果當好覆蓋了所有口味,那就更新一次答案}cout<<an;
}

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

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

相關文章

算法學習筆記(8.1)-動態規劃入門

目錄 問題特性&#xff1a; 最優子結構&#xff1a; 代碼示例&#xff1a;&#xff08;動態規劃最優子結構&#xff09; 上述最小代價爬樓梯的運行過程&#xff1a; 代碼示例&#xff1a; 無后效性&#xff1a; 解析&#xff1a; 具體過程圖示如下&#xff1a; 具體的…

如何為IP申請SSL證書

目錄 以下是如何輕松為IP地址申請SSL證書的詳細步驟&#xff1a; 申請IP證書的基本條件&#xff1a; 申請IP SSL證書的方式&#xff1a; 確保網絡通信安全的核心要素之一&#xff0c;是有效利用SSL證書來加密數據傳輸&#xff0c;特別是對于那些直接通過IP地址訪問的資源。I…

使用 Azure DevOps Pipelines 生成 .NET Core WebJob 控制臺應用 CI/CD

Web 應用程序通常需要作為后臺任務運行的進程&#xff0c;并在特定時間間隔進行計劃或在事件中觸發。它們不需要花哨的 IO 接口&#xff0c;因為重點是過程而不是輸出。Azure WebJobs 提供了出色的支持&#xff0c;通常在云環境中通過 Web 控制臺應用程序來實現此目的。WebJob …

企業數字化轉型中的低代碼開發平臺應用:釋放創新潛能

隨著信息技術的飛速發展&#xff0c;企業數字化轉型已成為行業趨勢。在這場轉型浪潮中&#xff0c;低代碼開發平臺以其獨特的優勢&#xff0c;成為眾多企業實現快速迭代、高效創新的得力助手。本文將深入探討低代碼開發平臺在企業數字化轉型中的應用&#xff0c;以及如何幫助企…

Mac平臺虛擬機 Parallels Desktop v19.4.1,支持M1/M2/M3芯片組

Parallels Desktop for Mac是功能強大靈活度高的虛擬化方案&#xff0c;無需重啟即可在同一臺電腦上隨時訪問Windows和Mac兩個系統上的眾多應用程序。從僅限于PC的游戲到生產力軟件&#xff0c;Parallels Desktop都能幫您實現便捷使用。Parallels Desktop 是一款專業的Mac虛擬機…

Docker搭建kafka+zookeeper以及Springboot集成kafka快速入門

參考文章 【Docker安裝部署KafkaZookeeper詳細教程】_linux arm docker安裝kafka-CSDN博客 Docker搭建kafkazookeeper 打開我們的docker的鏡像源配置 vim /etc/docker/daemon.json 配置 { "registry-mirrors": ["https://widlhm9p.mirror.aliyuncs.com"…

vue父子組件通信實現模糊搜索功能

我遇到的問題&#xff1a; 我的搜索框在父頁面&#xff0c;靜態數據都在子頁面。怎么實現模糊查詢數據&#xff1f; 昨天的嘗試&#xff1a;先把搜索的內容數據存到session里&#xff0c;然后從session里拿&#xff0c; 結果&#xff1a;存是存進去了&#xff0c;卻拿不到。應…

Django學習收尾

啟動項目命令 python manage.py runserver 文件上傳功能實現 title "Form上傳"if request.method "GET":form UpForm()return render(request, upload_form.html, {"form": form, "title": title})form UpForm(datarequest.POS…

Java對象創建究竟是在棧上還是堆上??

在 Java 中&#xff0c;對象的創建通常情況下是在堆上。 基本數據類型&#xff08;如 byte、short、int、long、float、double、char&#xff09;在方法內聲明時&#xff0c;其值會存儲在棧上。除了基本數據類型之外的所有對象&#xff0c;都是由 Java 虛擬機&#xff08;JVM&…

python入門基礎知識·二

""" # Python介紹 # Python注釋 # 單行注釋&#xff1a; # # 多行注釋&#xff1a; r """""" # Python輸出和輸入 # print: 輸出 # input: 輸入 ①會讓程序暫停&#xff0c;②得到的是字符串內容 int(&…

Linux Mac 安裝Higress 平替 Spring Cloud Gateway

Linux Mac 安裝Higress 平替 Spring Cloud Gateway Higress是什么?傳統網關分類Higress定位下載安裝包執行安裝命令執行腳本 安裝成功打開管理界面使用方法configure.shreset.shstartup.shshutdown.shstatus.shlogs.sh Higress官網 Higress是什么? Higress是基于阿里內部的…

Vue指令詳解與實操運用 - 編程魔法

在Vue.js的世界里&#xff0c;指令就像是一位魔法師&#xff0c;它們能夠賦予HTML元素以生命&#xff0c;讓網頁與用戶互動起來。今天&#xff0c;我們就來揭開這些指令的神秘面紗&#xff0c;看看它們是如何在我們的日常開發中發揮作用的。 1. v-text 和 v-html - 文字與內容的…

思考:Java內存模型和硬件內存模型

前言 前一陣在看volatile的原理&#xff0c;看到內存屏障和緩存一致性&#xff0c;發現再往底層挖就挖到了硬件和Java內存模型。這一塊是自己似懂非懂的知識區&#xff0c;我一般稱之為知識混沌區。因此整理這一篇文章。 什么是內存模型&#xff08;Memory Model&#xff09;…

CentOS6用文件配置IP模板

CentOS6用文件配置IP模板 到 CentOS6.9 , 默認還不能用 systemctl , 能用 service chkconfig sshd on 對應 systemctl enable sshd 啟用,開機啟動該服務 ### chkconfig sshd on 對應 systemctl enable sshd 啟用,開機啟動該服務 sudo chkconfig sshd onservice sshd start …

未羽研發測試管理平臺

突然有一些覺悟&#xff0c;程序猿不能只會吭哧吭哧的低頭做事&#xff0c;應該學會怎么去展示自己&#xff0c;怎么去宣傳自己&#xff0c;怎么把自己想做的事表述清楚。 于是&#xff0c;這兩天一直在整理自己的作品&#xff0c;也為接下來的找工作多做點準備。接下來…

LT7911UX 國產原裝 一拖三 edp 轉LVDS 可旋轉 可縮放

2.一般說明 該LT7911UX是一種高性能Type-C/DP1.4a到MIPI或LVDS芯片的VR/顯示應用。HDCP RX作為HDCP轉發器的上游&#xff0c;可以與其他芯片的HDCP TX配合實現轉發器功能。 對于DP1.4a輸入&#xff0c;LT7911UX可配置為1/2/4通道。自適應均衡使其適用于長電纜應用&#xff0c;最…

Junior.Crypt.2024 CTF Web方向 題解WirteUp 全

Buy a cat 題目描述&#xff1a;Buy a cat 開題 第一思路是抓包改包 Very Secure App 題目描述&#xff1a;All secrets become clear 開題 亂輸一個密碼就登陸成功了&#xff08;不是弱口令&#xff09; 但是回顯Your role is: user 但是有jwt&#xff01;&#xff01;&a…

深入理解基本數據結構:鏈表詳解

引言 在計算機科學中&#xff0c;數據結構是存儲、組織和管理數據的方式。鏈表是一種重要的線性數據結構&#xff0c;廣泛應用于各種編程場景。在這篇博客中&#xff0c;我們將詳細探討鏈表的定義、特點、操作及其在不同編程語言中的實現。 什么是鏈表&#xff1f; 鏈表是一種…

Mobile ALOHA前傳之VINN, Diffusion Policy和ACT對比

VINNDiffusion PolicyACT核心思想1.從離線數據中自監督學習獲得一個視覺編碼器&#xff1b;2.基于視覺編碼器&#xff0c;從采集的示例操作數據中檢索與當前觀測圖像最相似的N張圖像以及對應的動作&#xff1b;3.基于圖像編碼器的距離對各個動作進行加權平均&#xff0c;獲得最…

Open3D loss函數優化的ICP配準算法(精配準)

目錄 一、概述 1.1ICP的基本步驟 1.2損失函數的設計 二、代碼實現 2.1關鍵函數 2.2完整代碼 三、實現效果 3.1原始點云 3.2配準后點云 3.3計算數據 一、概述 ICP(Iterative Closest Point)配準算法是一種用于對齊兩個點云的經典算法。其目標是通過迭代優化…