第十六屆藍橋杯大賽軟件賽省賽第二場 C/C++ 大學 A 組

比賽還沒有開始,竟然忘記寫using namespace std; //debug半天沒看明白?(平時cv多了

然后就是忘記那個編譯參數,(好慘的開局

編譯參數-std=c++11

以下都是賽時所寫代碼,賽時無聊時把思路都打上去了(除了倒數第二題,多加了一個棧為空的判斷)

1~7題洛谷簡單測了一下都通過了

交題鏈接,這個是民間數據
https://www.luogu.com.cn/problem/list?tag=62%7C363&page=2

A

#include<bits/stdc++.h>using namespace std;
#define fi first
#define se second
int const N=2e5+7,M=2e6+7;int n,m;
int a[N];
string s,t;int main(){
//	init();//250 200 240//長50 寬40 高30//觀察可以發現大箱子調整為長250,寬200,高240//那么對于每一層50*40的小箱子可以正好鋪滿250*200的大箱子//高240又恰好為30的倍數,那么直接就是大箱子體積除小箱子體積 int n=200*240*250/30/40/50;	cout<<n<<endl; return 0;
}//200

B:

#include<bits/stdc++.h>using namespace std;
typedef long long LL;
#define fi first
#define se second
int const N=2e5+7,M=2e6+7;int n,m;
int a[N];
string s,t;int main(){int x=20255202,y=10244201;LL st=sqrt(x)+1; //計算最小的滿足x的平方數 
//	LL ans=0;//上邊界只需要枚舉到y, //只需要枚舉到y,y后面的不合法 for(LL i=st;i<=y;i++){	//枚舉平方數 //x一定為平方數 LL n=i*i-x,k=n+y; //先計算n,在計算y+n LL temp=sqrtl(k);	 if(temp*temp==k){ //判斷y+n是否為平方數 ans++;}}cout<<ans<<endl;return 0;
}
//14

C:

#include<bits/stdc++.h>using namespace std;
#define fi first
#define se second
int const N=2e5+7,M=2e6+7;int n,m;
int a[N];
string s="LANQIAO";//LANQIAOLANQIAOLANQIAO
int main(){cin>>n>>m;string t(m,0);int ans=0;//直接枚舉O(n*m) for(int i=0;i<n;i++){for(int j=0;j<m;j++){t[j]=s[(i+j)%7];if(t[j]=='A') ans++;}}cout<<ans<<endl;return 0;
}

D:

#include<bits/stdc++.h>using namespace std;
#define fi first
#define se second
int const N=2e5+7,M=2e6+7;int n,m;
string s,t;int main(){cin>>s;n=s.size();vector<int>a,b;for(int i=0;i<n;i++){if(s[i]=='A') a.push_back(i);else b.push_back(i);} int na=a.size(),nb=b.size();int  i=0,j=nb-1;//貪心讓前面的A和后面的B匹配 int cnt=0;while(i<na&&j>=0&&a[i]<b[j]){ 
//		cout<<a[i]<<" "<<b[j]<<endl;cnt+=2;i++;j--;}cout<<n-cnt<<"\n";return 0;
}/*
BABAABBA
ans=4ABABAB
*/

E:

#include<bits/stdc++.h>using namespace std;
typedef long long LL;
#define fi first
#define se second
int const N=2e5+7,M=2e6+7;int n,m;
int x,y,z;
int a[N];
string s,t;
vector<int>g[N];
LL dep[N];void dfs(int x,int fa,int k){dep[k]+=a[x];for(int y:g[x]) if(y!=fa) dfs(y,x,k+1);
}int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%d",a+i);for(int i=1;i<n;i++){scanf("%d%d",&x,&y);g[x].push_back(y);g[y].push_back(x);}dfs(1,-1,0);//不超過k條邊,那么距離小于k條邊的都是合法的節點,最后累加即可 LL ans=0;for(int i=0;i<=min(n,2*m);i++) ans+=dep[i];cout<<ans<<endl; return 0;
}/*
8 2
6 3 3 1 5 4 3 4
1 2
2 3
2 4
4 5
5 6
6 7
7 8ans=224 1
1 1 1 1
1 2
2 33 4*/

F:hash記錄前綴寫了單hash和雙hash,賽時交的雙hash

#include<bits/stdc++.h>using namespace std;
typedef long long LL;
#define fi first
#define se second
int const N=2e5+7,M=2e6+7;int n,m;
int const base1=37,mod1=2e9+11;
const int base2=13331,mod2=1e9+1e8+9;
string s,t;
int p[N],p2[N];/*
用i從小到大枚舉用hash表記錄前綴所有的字符串,然后判斷以j開始的反字符串,前面出現多少個 
直接用key等于string會tle
那么我們可以使用hash字符串記錄,時間復雜度n*m*log(mp) 
*/ void solve2(){//雙hash p[0]=p2[0]=1;for(int i=1;i<=n;i++){p[i]=1LL*p[i-1]*base1%mod1;p2[i]=1LL*p2[i-1]*base2%mod2;}map<LL,int>mp;LL ans=0;for(int i=0;i<n;i++){		//向后枚舉LL v=0,v2=0;for(int j=i;j<n;j++){v=(1LL*v*base1+(s[j]=='0'?'1':'0'))%mod1;v2=(1LL*v2*base2+(s[j]=='0'?'1':'0'))%mod2;LL bas=(v<<32)|v2;if(mp.count(bas)) ans+=mp[bas];} //向前枚舉 v=0; v2=0;for(int j=i;j>=0;j--){v=(v+1LL*p[i-j]*s[j])%mod1;v2=(v2+1LL*p2[i-j]*s[j])%mod2;LL bas=(v<<32)|v2;mp[bas]++;}
//		cout<<ans<<endl;}cout<<ans<<endl;	return;
} void solve(){ //單hash p[0]=1;for(int i=1;i<=n;i++) p[i]=1LL*p[i-1]*base1%mod1;map<int,int>mp;LL ans=0;for(int i=0;i<n;i++){		//向后枚舉int v=0;for(int j=i;j<n;j++){v=(1LL*v*base1+(s[j]=='0'?'1':'0'))%mod1;if(mp.count(v)) ans+=mp[v];} //向前枚舉 v=0;for(int j=i;j>=0;j--){v=(v+1LL*p[i-j]*s[j])%mod1;mp[v]++;}
//		cout<<ans<<endl;}cout<<ans<<endl;	return;
} int main(){
//	init();cin>>s;n=s.size();solve2();return 0;
}
/*
10011
ans=8111111
ans=0
000000
ans=0100
ans=0+1+11100
ans=3+211110
ans=4 */

G: 線段樹模板,區間乘積

#include<bits/stdc++.h>using namespace std;
typedef long long LL;
#define ls u<<1
#define rs u<<1|1
#define fi first
#define se second
int const N=2e5+7,M=2e6+7;int n,m;
int st[N],top;
LL tot=(1LL)<<32;
//計算后綴乘積 struct Node{int l,r;LL mul;
}tr[N<<2]; void pushup(Node &p,Node l,Node r){if(l.mul==0||r.mul==0){	//注意優先級 p.mul=0; }else if(l.mul==-1||r.mul==-1){p.mul=-1;}else{long double t=1.0*l.mul*r.mul; //防止溢出 if(t>=tot) p.mul=-1;else p.mul=t;}
}
void pushup(int u){pushup(tr[u],tr[ls],tr[rs]);
}
void build(int u,int l,int r){tr[u]={l,r,1};if(l==r) return;int mid=(l+r)>>1;build(ls,l,mid);build(rs,mid+1,r);pushup(u); 
}void modify(int u,int p,LL v){if(tr[u].l==tr[u].r) tr[u].mul=v;else{int mid=(tr[u].l+tr[u].r)>>1;if(mid>=p) modify(ls,p,v);else modify(rs,p,v);pushup(u);} 
}Node query(int u,int x,int y){if(x<=tr[u].l&&tr[u].r<=y) return tr[u];int mid=(tr[u].l+tr[u].r)>>1;if(mid<x) return query(rs,x,y);if(y<=mid) return query(ls,x,y);Node res; pushup(res,query(ls,x,y),query(rs,x,y));return res;
}void solve2(){ //線段樹維護區間乘積 build(1,1,m);int T=m;while(T--){int opt,x; scanf("%d",&opt); if(opt==1){scanf("%d",&x);st[++top]=x;modify(1,top,x);	} else if(opt==2){if(top>=1){modify(1,top,1); //設回1避免干擾 top--;}}else{scanf("%d",&x);if(top<x) printf("ERROR\n");else{LL res=query(1,top-x+1,top).mul; if(res==-1) printf("OVERFLOW\n");else printf("%lld\n",res);} }}
}void solve(){ //q*lognLL tot=(1LL)<<32;	//cout<<tot<<endl;while(m--){int opt,x; scanf("%d",&opt); if(opt==1){scanf("%d",&x);st[++top]=x;} else if(opt==2){top--;}else{scanf("%d",&x);if(top<x) printf("ERROR\n");else{LL res=1;int ok=0;for(int i=top;i>=top-x+1;i--){res=res*st[i];if(res>=tot){ok=1;break;}}if(ok) printf("OVERFLOW\n");else printf("%lld\n",res);} }}
}int main(){scanf("%d",&m);solve2();return 0;
}
/*
9
1 65536
1 65536
3 2
3 3
2
1 1024
1 2
3 2
3 3OVERFLOW
ERROR
2048
13421772812
1 2
1 2
1 2
1 2
3 1
3 2
3 3
3 4
3 5
2
3 3
3 4給定一個棧,給出若干次如下類型的操作:
1 x: 將 x 加入棧頂。
2: 將棧頂的數彈出(如果棧是空的,則什么都不做)。
3 y: 查詢棧內的最頂端 y 個數的乘積。如果大于等于 2
如果棧內不足 x->(y) 個數,輸出 ERROR 。*/

?H:最后一題寫不是正解,不貼了qwq

祝大家都是省一

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

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

相關文章

CentOS 7上Memcached的安裝、配置及高可用架構搭建

Memcached是一款高性能的分布式內存緩存系統&#xff0c;常用于加速動態Web應用的響應。本文將在CentOS 7上詳細介紹Memcached的安裝、配置&#xff0c;以及如何實現Memcached的高可用架構。 &#xff08;1&#xff09;、搭建memcached 主主復制架構 Memcached 的復制功能支持…

告別進度失控:用燃盡圖補上甘特圖的監控盲區

在職場中&#xff0c;項目經理最頭疼的莫過于“計劃趕不上變化”。明明用甘特圖排好了時間表&#xff0c;任務卻總像脫韁野馬——要么進度滯后&#xff0c;要么資源分配失衡。甘特圖雖能直觀展示任務時間軸&#xff0c;但面對突發風險或團隊效率波動時&#xff0c;它更像一張“…

爬蟲-oiwiki

我們將BASE_URL 設置為 "https://oi-wiki.org/" 后腳本就會自動開始抓取該url及其子頁面的所有內容&#xff0c;并將統一子頁面的放在一個文件夾中 import requests from bs4 import BeautifulSoup from urllib.parse import urljoin, urlparse import os import pd…

業務中臺與數據中臺:企業數字化轉型的核心引擎

前言&#xff1a;在當今數字化浪潮下&#xff0c;企業為了提升運營效率、加速創新步伐并更好地適應市場變化&#xff0c;業務中臺與數據中臺應運而生&#xff0c;成為企業架構中的關鍵組成部分。本文將深入探討業務中臺和數據中臺的簡介、發展史、技術流環節以及在實際生產中的…

django admin 去掉新增 刪除

在Django Admin中&#xff0c;你可以通過自定義Admin類來自定義哪些按鈕顯示&#xff0c;哪些不顯示。如果你想隱藏“新增”和“刪除”按鈕&#xff0c;可以通過重寫change_list_template或使用ModelAdmin的has_add_permission和has_delete_permission屬性來實現。 方法1&…

基于云原生架構的后端微服務治理實戰指南

一、引言&#xff1a;為什么在云原生時代更需要微服務治理&#xff1f; 在單體應用時代&#xff0c;開發和部署雖然簡單&#xff0c;但隨著系統規模的擴大&#xff0c;單體架構的維護成本急劇上升&#xff0c;部署頻率受限&#xff0c;模塊之間相互影響&#xff0c;最終導致系…

MIT6.S081 - Lab10 mmap(文件內存映射)

本篇是 MIT6.S081 2020 操作系統課程 Lab10 的實驗筆記&#xff0c;目標只有一個&#xff1a;實現文件映射到內存的功能&#xff0c;也就是 mmap。 作為一名 Android 開發者&#xff0c;我可太熟悉 mmap 這個詞兒了。Android 的 跨進程通信 Binder 驅動、圖形內存分配和管理、…

基于BenchmarkSQL的OceanBase數據庫tpcc性能測試

基于BenchmarkSQL的OceanBase數據庫tpcc性能測試 安裝BenchmarkSQL及其依賴安裝軟件依賴編譯BenchmarkSQLBenchmarkSQL props文件配置數據庫和測試表配置BenchmarkSQL壓測裝載測試數據TPC-C壓測(固定事務數量)TPC-C壓測(固定時長)生成測試報告重復測試流程梳理安裝Benchmar…

WinForm真入門(17)——NumericUpDown控件詳解

一、基本概念? NumericUpDown 是 Windows 窗體中用于數值輸入的控件&#xff0c;由文本框和上下調節按鈕組成。用戶可通過以下方式調整數值&#xff1a; 點擊調節按鈕增減數值鍵盤直接輸入使用方向鍵調整 適用于需要限制數值范圍或精確控制的場景&#xff08;如年齡、參數配…

汽車自動駕駛介紹

0 Preface/Foreword 1 介紹 1.1 FSD FSD: Full Self-Driving&#xff0c;完全自動駕駛 &#xff08;Tesla&#xff09; 1.2 自動駕駛級別 L0 - L2&#xff1a;輔助駕駛L3&#xff1a;有條件自動駕駛L4/5 &#xff1a;高度/完全自動駕駛

AiCube 試用 - ADC 水位監測系統

AiCube 試用 - ADC 水位監測系統 水位檢測在水資源管理、城市防洪、農業灌溉、家用電器和工業生產等多領域發揮積極建設作用。利用水位傳感器&#xff0c;可以實現水資源的智能管理&#xff0c;提高生產效率。 本文介紹了擎天柱開發板利用 AiCube 工具快速創建 I/O 電壓讀取&…

秒殺壓測計劃 + Kafka 分區設計參考

文章目錄 前言&#x1f680; 秒殺壓測計劃&#xff08;TPS預估 測試流程&#xff09;1. 目標設定2. 壓測工具推薦3. 壓測命令示例&#xff08;ab版&#xff09;4. 測試關注指標 &#x1f4e6; Kafka Topic 分區設計參考表1. 單 Topic 設計2. 分區路由規則設計&#xff08;Part…

memcpy 使用指南 (C語言)

memcpy 是 C 語言標準庫中的一個重要函數&#xff0c;用于在內存區域之間復制數據。它是 <string.h> 頭文件中定義的高效內存操作函數之一。 函數原型 void *memcpy(void *dest, const void *src, size_t n); 參數說明 dest: 目標內存地址&#xff0c;數據將被復制到這…

跨境電商貨物體積與泡重計算器:高效便捷的物流計算工具

跨境電商貨物體積與泡重計算器&#xff1a;高效便捷的物流計算工具 工具簡介 貨物體積與泡重計算器是一款免費的在線工具&#xff0c;專門為物流從業者、跨境電商賣家和需要計算貨物運輸體積重量的用戶設計。這款工具可以幫助您快速計算貨物的體積和對應的空運、快遞泡重&…

如何避免爬蟲因Cookie過期導致登錄失效

1. Cookie的作用及其過期機制 1.1 什么是Cookie&#xff1f; Cookie是服務器發送到用戶瀏覽器并保存在本地的一小段數據&#xff0c;用于維持用戶會話狀態。爬蟲在模擬登錄后&#xff0c;通常需要攜帶Cookie訪問后續頁面。 1.2 Cookie為什么會過期&#xff1f; 會話Cookie&…

matlab simulink中理想變壓激磁電流容易有直流偏置的原因分析。

simulink把線性變壓器模塊拉出來&#xff0c;設置沒有繞線電阻的變壓器&#xff0c;激磁電感和Rm都有&#xff0c;然后給一個50%占空比的方波&#xff0c;幅值正負10V&#xff0c;線路中設置一個電阻&#xff0c;模擬導線阻抗。通過示波器觀察激磁電流&#xff0c;發現電阻越小…

電力系統失步解列與振蕩解析

一、基本概念解析 1. 失步&#xff08;Out-of-Step&#xff09; 在電力系統中&#xff0c;失步是指并列運行的同步發電機因功率失衡導致轉子間相對角度超過穩定極限&#xff0c;無法維持同步運行的狀態。具體表現為&#xff1a; 當系統發生短路、負荷突變或故障切除等擾動時&…

ctfhub-RCE

關于管道操作符 windows&#xff1a; 1. “|”&#xff1a;直接執行后面的語句。 2. “||”&#xff1a;如果前面的語句執行失敗&#xff0c;則執行后面的語句&#xff0c;前面的語句只能為假才行。 3. “&”&#xff1a;兩條命令都執行&#xff0c;如果前面的語句為假則直…

Missashe考研日記-day28

Missashe考研日記-day28 1 專業課408 學習時間&#xff1a;2h學習內容&#xff1a; 今天先是預習了OS關于虛擬內存管理的內容&#xff0c;然后聽了一部分視頻課&#xff0c;明天接著學。知識點回顧&#xff1a; 1.傳統存儲管理方式特征&#xff1a;一次性、駐留性。2.局部性原…

01 appium環境搭建

環境搭建 Java JDKNode.jsAndroidStudio(提供sdk)appiumappium Inspector 相關安裝包下載 鏈接&#xff1a;https://pan.xunlei.com/s/VOOf3sCttAdHvlMkc7QygsoJA1# 提取碼&#xff1a;x4s5 AndroidStudio下載安裝sdk AndroidStudio下載 安裝運行&#xff0c;配置代理及測…