AtCoder Beginner Contest 403(題解ABCDEF)

A - Odd Position Sum?

#1.奇數數位和

#include<iostream>
#include<vector>
#include<stdio.h>
#include<map>
#include<string>
#include<algorithm>
#include<queue>
#include<cstring>
#include<stack>
#include<array>
#include<cmath>
#include<set>
#include<unordered_set>
#include<unordered_map>
#include<iomanip>
using namespace std;
using ll = long long;
using llu = unsigned long long;
const ll inf = 0x3f3f3f3f3f3f3f3fll;
const ll MIN = -9187201950435737472ll;
ll mod = 1e9 + 7;
ll base = 131;
const int N = 1e4 + 10;
int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int n;cin>>n;int sum=0,x;for(int i=1;i<=n;i++){cin>>x;if(i&1)sum+=x;}cout<<sum<<endl;return 0;
}

B - Four Hidden??

?#1.暴力判斷即可,遇到#可任意匹配

#include<iostream>
#include<vector>
#include<stdio.h>
#include<map>
#include<string>
#include<algorithm>
#include<queue>
#include<cstring>
#include<stack>
#include<array>
#include<cmath>
#include<set>
#include<unordered_set>
#include<unordered_map>
#include<iomanip>
using namespace std;
using ll = long long;
using llu = unsigned long long;
const ll inf = 0x3f3f3f3f3f3f3f3fll;
const ll MIN = -9187201950435737472ll;
ll mod = 1e9 + 7;
ll base = 131;
const int N = 1e4 + 10;
int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);string s1,s2;cin>>s1>>s2;int n=s1.length(),m=s2.length();s1="#"+s1;s2="#"+s2;for(int i=1;i+m-1<=n;i++){if(s1[i]==s2[1]||s1[i]=='?'){int j=i;int cnt=0;for(int j=i;j<=i+m-1;j++){if(s1[j]=='?'||s1[j]==s2[j-i+1])cnt++;}if(cnt==m){cout<<"Yes"<<endl;return 0;}}}cout<<"No"<<endl;return 0;
}

?C - 403 Forbidden

#1.set的簡單應用

#include<iostream>
#include<vector>
#include<stdio.h>
#include<map>
#include<string>
#include<algorithm>
#include<queue>
#include<cstring>
#include<stack>
#include<array>
#include<cmath>
#include<set>
#include<unordered_set>
#include<unordered_map>
#include<iomanip>
using namespace std;
using ll = long long;
using llu = unsigned long long;
const ll inf = 0x3f3f3f3f3f3f3f3fll;
const ll MIN = -9187201950435737472ll;
ll mod = 1e9 + 7;
ll base = 131;
const int N = 2e6+ 10;
set<pair<int,int>>st;
bool vis[N];
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n,m,q;cin>>n>>m>>q;int ty,x,y;while(q--){cin>>ty;if(ty==1){cin>>x>>y;st.insert({x,y});}else if(ty==2){cin>>x;vis[x]=true;}else{cin>>x>>y;if(vis[x])cout<<"Yes"<<endl;else{if(st.count({x,y}))cout<<"Yes"<<endl;else cout<<"No"<<endl;}}}return 0;
}

D - Forbidden Difference?

給一個序列,我們需要刪除一些元素,讓剩下元素滿足任意兩個差的絕對值不等于d,問刪的最小值

#1.給定ai和d的值域都很小,可以開一個1e6的桶,來記錄ai中每個值出現的次數

#2.注意到當差的絕對值為d時,在1e6的范圍中是以d為步幅遞增的,也就是同余的,考慮將數對d取模?,單獨存在一個vector中,存在vector的中的是出現次數

#3.于是問題變成了一個經典dp問題--相鄰不取取最大,最后拿總數減剩下的就是答案(特判d==0)

#include<iostream>
#include<vector>
#include<stdio.h>
#include<map>
#include<string>
#include<algorithm>
#include<queue>
#include<cstring>
#include<stack>
#include<array>
#include<cmath>
#include<set>
#include<unordered_set>
#include<unordered_map>
#include<iomanip>
using namespace std;
using ll = long long;
using llu = unsigned long long;
const ll inf = 0x3f3f3f3f3f3f3f3fll;
const ll MIN = -9187201950435737472ll;
ll mod = 1e9 + 7;
ll base = 131;
const int N = 1e6+10;
const int M=1e6;
int cnt[N];
int a[N];
int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int n,d;cin>>n>>d;for(int i=1;i<=n;i++){cin>>a[i];cnt[a[i]]++;}if(d==0){int sz=0;for(int i=0;i<=M;i++){sz+=cnt[i]>0;}cout<<n-sz<<endl;return 0;}int sum=0;for(int i=0;i<d;i++){vector<int>b(1,0);for(int j=i;j<=M;j+=d){b.push_back(cnt[j]);}int sz=b.size()-1;vector<int>dp(sz+1,-1);dp[1]=b[1];if(sz>=2)dp[2]=max(dp[1],b[2]);for(int j=3;j<=sz;j++){dp[j]=max(dp[j-1],dp[j-2]+b[j]);}sum+=dp[sz];}cout<<n-sum<<endl;return 0;
}

?E - Forbidden Prefix

給兩個字符串集合x和y,q次操作,操作1是向x中添加字符串,操作2是對y中添加字符串,每次添加后輸出y中不以x中字符串為前綴的字符串

#1.求解字符串前綴問題考慮字典樹,要維護e數組,即有多少字符串經過該節點,每次要輸出的就是e[0]

#2.對操作1的刪除,有兩種情況,一種是添加的這個字符串它的前綴已經在x中出現,那就不用考慮,可以用vis標記x中字符串結尾,經過vis不為0的節點,說明前綴出現過。另一種是從未出現過,那就要將經過過該節點的節點都要減去這個節點的e值,代表這個前綴已經刪除

#3.接下來是向y中添加字符串,判斷路徑是否經過x的前綴即可,用vis判斷

#include<iostream>
#include<vector>
#include<stdio.h>
#include<map>
#include<string>
#include<algorithm>
#include<queue>
#include<cstring>
#include<stack>
#include<array>
#include<cmath>
#include<set>
#include<unordered_set>
#include<unordered_map>
#include<iomanip>
using namespace std;
using ll = long long;
using llu = unsigned long long;
const ll inf = 0x3f3f3f3f3f3f3f3fll;
const ll MIN = -9187201950435737472ll;
ll mod = 1e9 + 7;
ll base = 131;
const int N = 1e5 + 10;
int nxt[30*N][26];
int vis[30*N],cnt=0,sz=0,l,e[30*N];
int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int q,ty;cin>>q;string s;while(q--){cin>>ty;if(ty==1){cin>>s;l=s.length();int now=0;bool tag=true;for(int i=0;i<l;i++){int x=s[i]-'a';if(!nxt[now][x])nxt[now][x]=++cnt;now=nxt[now][x];if(vis[now])tag=false;}vis[now]=1;if(tag){int y=0;e[y]-=e[now];for(int i=0;i<l;i++){int x=s[i]-'a';y=nxt[y][x];e[y]-=e[now];}}}else{cin>>s;l=s.length();int now=0;bool tag=true;for(int i=0;i<l;i++){int x=s[i]-'a';if(!nxt[now][x])nxt[now][x]=++cnt;now=nxt[now][x];if(vis[now])tag=false;}if(tag){now=0;e[now]++;for(int i=0;i<l;i++){int x=s[i]-'a';now=nxt[now][x];e[now]++;}}}cout<<e[0]<<endl;}return 0;
}

F - Shortest One Formula?

用一些1和+,*來構成一個表達式,使其結果為n,求最短表達式

#1.n只有2000,考慮暴力遞推,由于一個加法表達式和一個乘法表達式相乘時加法表達式需要加括號,那就將加法與乘法分開考慮,給f[i]表示最后一次操作是加法結果是i的字符串,g[i]表示最后一次操作時乘法結果時i的字符串

#2.從1遞推到n,特判1,11,111,1111,其他的遞推到i是,分解i為x+y后x*y,一一枚舉,更新f[i]與g[i]

#include<iostream>
#include<vector>
#include<stdio.h>
#include<map>
#include<string>
#include<algorithm>
#include<queue>
#include<cstring>
#include<string>
#include<stack>
#include<array>
#include<cmath>
#include<set>
#include<unordered_set>
#include<unordered_map>
#include<iomanip>
using namespace std;
using ll = long long;
using llu = unsigned long long;
const ll inf = 0x3f3f3f3f3f3f3f3fll;
const ll MIN = -9187201950435737472ll;
ll mod = 1e9 + 7;
ll base = 131;
const int N =2e3+10;
string f[N],g[N];
int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int n;cin>>n;for(int i=1;i<=n;i++){if(i==1){f[i]="1";g[i]="1";}else if(i==11){f[i]="11";g[i]="11";}else if(i==111){f[i]="111";g[i]="111";}else if(i==1111){f[i]="1111";g[i]="1111";}else{f[i]=f[1]+"+"+f[i-1];for(int x=1;x+x<=i;x++){int y=i-x;if(f[x].size()+f[y].size()+1<f[i].size()){f[i]=f[x]+"+"+f[y];}if(f[x].size()+g[y].size()+1<f[i].size()){f[i]=f[x]+"+"+g[y];}if(g[x].size()+f[y].size()+1<f[i].size()){f[i]=g[x]+"+"+f[y];}if(g[x].size()+g[y].size()+1<f[i].size()){f[i]=g[x]+"+"+g[y];}}g[i]="("+f[i]+")"+"*"+g[1];for(int x=1;x<=i/x;x++){if(i%x)continue;int y=i/x;if(f[x].size()+f[y].size()+5<g[i].size()){g[i]="("+f[x]+")"+"*"+"("+f[y]+")";}if(f[x].size()+g[y].size()+3<g[i].size()){g[i]="("+f[x]+")"+"*"+g[y];}if(g[x].size()+f[y].size()+3<g[i].size()){g[i]=g[x]+"*"+"("+f[y]+")";}if(g[x].size()+g[y].size()+1<g[i].size()){g[i]=g[x]+"*"+g[y];}}}}if(f[n].size()<g[n].size()){cout<<f[n]<<endl;}else cout<<g[n]<<endl;return 0;
}

?

?

?

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

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

相關文章

【Game】Powerful——Abandoned Ruins(9)

文章目錄 1、新增古玩2、機關機制3、探索法寶4、智斗強敵5、地圖6、參考 2025 年 1 月迎來的新玩法——荒廢遺跡 每周四個寶藏鏟&#xff08;老玩法&#xff09;或者兩個遺跡線索&#xff08;新玩法&#xff09;&#xff0c;3 個寶藏鏟也可以換一個遺跡線索&#xff0c;之前沒時…

構建網頁版IPFS去中心化網盤

前言&#xff1a;我把它命名為無限網盤 Unlimited network disks&#xff08;ULND&#xff09;&#xff0c;可以實現簡單的去中心化存儲&#xff0c;其實實現起來并不難&#xff0c;還是依靠強大的IPFS&#xff0c;跟著我一步一步做就可以了。 第一步&#xff1a;準備開發環境…

國標GB28181視頻平臺EasyGBS在物業視頻安防管理服務中的應用方案?

一、方案背景? 在現代物業服務中&#xff0c;高效的安全管理與便捷的服務運營至關重要。隨著科技的不斷發展&#xff0c;物業行業對智能化、集成化管理系統的需求日益增長。EasyGBS作為一款基于國標GB28181協議的視頻監控平臺&#xff0c;具備強大的視頻管理與集成能力&#…

[Unity]設置自動打包腳本

背景 我們經常會使用自動打包功能 文件名稱: AutoBuild.csusing System.IO; using System.Linq; using UnityEditor; using UnityEngine;public class AutoBuilder {[MenuItem("Build/GetCurrentBuildTarget")]public static void GetCurrentBuildTarget(){Debug.L…

正點原子STM32H743單片機實現ADC多通道檢測

目標 使用STM32CubeMX工具&#xff0c;配置ADC相關參數&#xff0c;實現在STM32H743單片機上獲取ADC多通道電壓值。共14個ADC引腳&#xff0c;ADC2有5個&#xff0c;ADC3有9個&#xff0c;全部設置單通道 ADC引腳 PF3PF4PF5PF10PC0PC2PC3PH2PH3PA3PB0PB1PA4PA5PA6 STM32cube…

深度學習基礎(四)——計算量(FLOPs)、參數量(Params)、計算速度(FLOPS/TOPS))

一、計算量FLOPs FLOPs&#xff0c;全稱為Floating Point Operations, (s為復數縮寫&#xff09;&#xff0c;浮點運算數&#xff0c;指模型完成一次前向傳播所需的浮點運算次數&#xff0c;可以理解為計算量&#xff08;模型的時間復雜度&#xff09;&#xff0c;用來衡量算法…

電子秤檢測管理系統開發實戰:從數據采集到可視化大屏

簡介 電子秤作為現代工業生產和商業流通中的核心計量設備,其準確性直接關系到產品質量和交易公平。針對仙貝生產企業的電子秤管理需求,我們開發了一套集電子秤檢測信息錄入、產品信息管理、實時稱重數據采集和后臺可視化大屏于一體的綜合管理系統。該系統基于Django框架構建…

Cesium添加WMS,WMTS,地形圖圖,3D Tiles數據

在 Cesium 中&#xff0c;你可以添加 WMS、WMTS、地形圖 和 3D Tiles 數據源。以下是詳細的實現方法&#xff1a; 1. 添加 WMS 服務 WMS&#xff08;Web Map Service&#xff09;是一種動態地圖服務&#xff0c;適用于加載柵格地圖圖層。 代碼示例 const viewer new Cesium…

數據庫基本概念:數據庫的定義、特點、分類、組成、作用

一&#xff1a;數據庫相關概念 1.1 定義 &#xff08;1&#xff09;數據庫&#xff1a;存儲數據的倉庫 &#xff08;2&#xff09;數據庫管理系統&#xff1a;模擬和管理數據庫的大型軟件 &#xff08;3&#xff09;SQL&#xff1a;操作關系型數據庫的編程語言&#xff0c;定義…

【項目篇之消息序列化】仿照RabbitMQ模擬實現消息隊列

實現消息序列化 為什么不使用JSON來序列化直接使用二進制序列化實現序列化方法toBytes()1&#xff1a; 創建內存緩沖區??2 &#xff1a;創建對象序列化通道?3&#xff1a;執行序列化操作?4&#xff1a;提取二進制數據&#xff0c;轉換成byte[]序列化圖示流程&#xff1a;序…

單片機-89C51部分:13、看門狗

飛書文檔https://x509p6c8to.feishu.cn/wiki/LefkwDPU7iUUWBkfKE9cGLvonSh 一、作用 程序發生死循環的時候&#xff08;跑飛&#xff09;&#xff0c;能夠自動復位。 啟動看門狗計數器->計數器計數->指定時間內不對計數器賦值&#xff08;主程序跑飛&#xff0c;無法喂…

C++23/26 靜態反射機制深度解析:編譯時元編程的新紀元

目錄 引言 一、C靜態反射的核心特性 1. 編譯時元數據獲取 2. 元信息操作的語法革新 3. 與現有特性的深度融合 二、應用場景&#xff1a;從理論到實踐 1. 序列化與反序列化 2. 領域特定語言&#xff08;DSL&#xff09;與代碼生成 3. 動態插件系統 4. 調試與元編程增強…

RISCV學習(5)GD32VF103 MCU架構了解

RISCV學習&#xff08;5&#xff09;GD32VF103 MCU架構了解 1、芯片內核功能簡介 GD32VF103 MCU架構&#xff0c;采用Bumblebee內核&#xff0c;芯來科技&#xff08;Nuclei System Technology&#xff09;與臺灣晶心科技&#xff08;Andes Technology&#xff09;聯合開發&am…

【Java學習筆記】遞歸

遞歸&#xff08;recursion&#xff09; 思想&#xff1a;把一個復雜的問題拆分成一個簡單問題和子問題&#xff0c;子問題又是更小規模的復雜問題&#xff0c;循環往復 本質&#xff1a;棧的使用 遞歸的注意事項 &#xff08;1&#xff09;需要有遞歸出口&#xff0c;否者就…

滲透測試中的那些“水洞”:分析與防御

1. Nginx 版本泄露 風險分析&#xff1a; Nginx 默認會在響應頭中返回 Server: nginx/x.x.x&#xff0c;攻擊者可利用該信息匹配已知漏洞進行攻擊。 防御措施&#xff1a; 修改 nginx.conf 配置文件&#xff0c;隱藏版本信息&#xff1a;server_tokens off;使用 WAF 進行信息…

基于C#開發的適合Windows開源文件管理器

使用DDD從零構建一個完整的系統 推薦一個功能強大且直觀的開源文件管理器&#xff0c;適用于Windows平臺。 01 項目簡介 該項目是一個基于C#開發、開源的文件管理器&#xff0c;適用于Windows&#xff0c;界面UI美觀、方便輕松瀏覽文件。此外&#xff0c;支持創建和提取壓縮…

實習入職的總結

我是4月14號入職的&#xff0c;到現在差不多已經三個禮拜了&#xff0c;今天想總結一下這段時間的工作情況&#xff0c;并給學弟學妹們提供一些指引。 目前&#xff0c;我所在的公司是一家初創企業&#xff0c;專注于IPC安防領域。作為一名大專生&#xff0c;我深知自己的學歷在…

Ubuntu 系統上部署 Kubernetes 的完整指南

Ubuntu 系統上部署 Kubernetes 的完整指南 一、環境準備&#xff08;Ubuntu 22.04/24.04&#xff09;1. 系統初始化2. 安裝容器運行時&#xff08;containerd&#xff09;3. 安裝 Kubernetes 組件&#xff08;kubeadm, kubelet, kubectl&#xff09; 二、部署 Kubernetes 集群1…

partition_pdf 和chunk_by_title 的區別

from unstructured.partition.pdf import partition_pdf from unstructured.chunking.title import chunk_by_titlepartition_pdf 和 chunk_by_title 初看有點像&#xff0c;都在"分塊"&#xff0c;但是它們的本質完全不一樣。 先看它們核心區別 partition_pdfchun…

基于深度學習的醫療診斷輔助系統設計

標題:基于深度學習的醫療診斷輔助系統設計 內容:1.摘要 隨著醫療數據的爆炸式增長和深度學習技術的飛速發展&#xff0c;開發基于深度學習的醫療診斷輔助系統具有重要的現實意義。本研究的目的在于設計一個高效、準確的醫療診斷輔助系統&#xff0c;以輔助醫生進行更精準的診斷…