【藍橋杯】國賽普及-

題目列表 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

P9420 [藍橋杯 2023 國 B] 子 2023 / 雙子數 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

#include<bits/stdc++.h>
using ll=unsigned long long;
#define int ll
const int N=2e5+10;
int k=0;
std::string s;
int a,b,c,d;
void solve()
{char op;std::cin>>op;if(op=='A'){std::string s;for(int i=1;i<=2023;i++){s+=std::to_string(i);	}	//std::cout<<s;//std::cout<<5484660609<<'\n';ll ans=0;int len=s.length();std::vector<int> v1;std::vector<int> v2;std::vector<int> v3;for(int i=0;i<len;i++){if(s[i]=='2') v1.push_back(i);if(s[i]=='0') v2.push_back(i);if(s[i]=='3') v3.push_back(i);}for(int i=0;i<v1.size();i++){for(int j=0;j<v2.size();j++){if(v2[j]<=v1[i]) continue;for(int k=i+1;k<=v1.size();k++){if(v1[k]<=v2[j]) continue;for(int p=0;p<v3.size();p++){if(v3[p]<=v1[k]) continue;ans++;}}}}std::cout<<ans<<'\n';}
}
signed main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);int t=1;//std::cin>>t;while(t--){solve();}return 0;
} 

答案算出來是5484660609。

把質數存下來枚舉判斷即可,我不記得篩質數的板子所以寫了個isprime。。

#include<bits/stdc++.h>
using ll=unsigned long long;
#define int ll
const int N=2e5+10;
int k=0;
std::string s;
int a,b,c,d;
bool isprime(int x)
{for(int i=2;i<=x/i;i++){if(x%i==0) return false;}return true;
}
void solve()
{char op;std::cin>>op;if(op=='A'){std::string s;for(int i=1;i<=2023;i++){s+=std::to_string(i);	}	//std::cout<<s;std::cout<<5484660609<<'\n';ll ans=0;int len=s.length();std::vector<int> v1;std::vector<int> v2;std::vector<int> v3;for(int i=0;i<len;i++){if(s[i]=='2') v1.push_back(i);if(s[i]=='0') v2.push_back(i);if(s[i]=='3') v3.push_back(i);}for(int i=0;i<v1.size();i++){for(int j=0;j<v2.size();j++){if(v2[j]<=v1[i]) continue;for(int k=i+1;k<=v1.size();k++){if(v1[k]<=v2[j]) continue;for(int p=0;p<v3.size();p++){if(v3[p]<=v1[k]) continue;ans++;}}}}std::cout<<ans<<'\n';}else{
//		for(int i=1;i<=110000000;i++)
//		{
//			if(i*i>=23333333333333)
//			{
//				std::cout<<i;
//				break;
//			}
//		}
//4830549std::vector<int> v;for(int i=2;i<=5000000;i++){if(isprime(i)) v.push_back(i);}//std::cout<<v.size()<<"xxx\n";ll ans=0;for(int i=0;i<v.size();i++){for(int j=i+1;j<v.size();j++){if((double)v[i]*v[i]*v[j]*v[j]<=23333333333333&&v[i]*v[i]*v[j]*v[j]>=2333) ans++;if((double)v[i]*v[i]*v[j]*v[j]>23333333333333) break;}}std::cout<<ans<<'\n';//947293} 
}
signed main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);int t=1;//std::cin>>t;while(t--){solve();}return 0;
} 

最后算出來是947293,偶對要開double,這題會爆ull,原來double比unsigned longlong大啊。

補個線性篩版本,快很多。

#include<bits/stdc++.h>
using ll=unsigned long long;
#define int ll
const int N=5e6+10;
int k=0;
std::string s;
bool st[N];
void solve()
{std::vector<int> v;for(int i=2;i<=5000000;i++){if(!st[i]) v.push_back(i);for(int j=0;j<v.size()&&v[j]<=5000000/i;j++){st[v[j]*i]=1;}}//std::cout<<v.size()<<"xxx\n";ll ans=0;for(int i=0;i<v.size();i++){for(int j=i+1;j<v.size();j++){if((double)v[i]*v[i]*v[j]*v[j]<=23333333333333&&v[i]*v[i]*v[j]*v[j]>=2333) ans++;if((double)v[i]*v[i]*v[j]*v[j]>23333333333333) break;}}std::cout<<ans<<'\n';//947293
}
signed main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);int t=1;//std::cin>>t;while(t--){solve();}return 0;
} 

P8605 [藍橋杯 2013 國 AC] 網絡尋路 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

?DFS會t一個點。

#include<bits/stdc++.h>
using ll=unsigned long long;
using i128=__int128;const int N=1e5+10;
std::vector<int> g[N];
ll ans=0;
bool st[N];
void dfs(int fa,int x,int cnt)
{if(cnt==2){for(auto i:g[x]){if(!st[i]){ans++;//	break;}}return ;}if(cnt>2) return ;for(auto i:g[x]){if(i==fa) continue;if(st[i]) continue;st[i]=1;dfs(fa,i,cnt+1);st[i]=0;}
}
void solve()
{int n,m;std::cin>>n>>m;while(m--){int u,v;std::cin>>u>>v;g[u].push_back(v);g[v].push_back(u);}for(int i=1;i<=n;i++){dfs(i,i,0);}std::cout<<ans<<'\n';
}
signed main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);int t=1;//std::cin>>t;while(t--){solve();}return 0;
} 

實際上經過兩個點,我們直接枚舉邊就好了,對于一條邊的兩個端點如果都還連著別的點,情況數就加上。

#include<bits/stdc++.h>
using ll=unsigned long long;
using i128=__int128;const int N=1e5+10;ll ans=0;
int u[N],v[N];
int rd[N];
void solve()
{int n,m;std::cin>>n>>m;for(int i=1;i<=m;i++){std::cin>>u[i]>>v[i];rd[v[i]]++,rd[u[i]]++;}for(int i=1;i<=m;i++){if(rd[v[i]]>1&&rd[u[i]]>1){ans+=(rd[v[i]]-1)*(rd[u[i]]-1);}}ans*=2;std::cout<<ans<<'\n';
}
signed main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);int t=1;//std::cin>>t;while(t--){solve();}return 0;
} 

P8738 [藍橋杯 2020 國 C] 天干地支 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

就是一個模擬題,靜下心模擬就好了。?

題目說1900是一個庚子年,1900%60=40,第一個庚子年是0040,然后%10,%12會發現0000是一個庚申年,然后隨意輸入一個年份在0000的基礎上模擬就好。

#include<bits/stdc++.h>
using ll=unsigned long long;
using i128=__int128;
#define int ll 
const int N=1e5+10;std::string a[]={"jia","yi","bing","ding","wu","ji","geng","xin","ren","gui"};
std::string b[]={"zi","chou","yin","mao","chen","si","wu","wei","shen","you","xu","hai"};
void solve()
{int y;std::cin>>y;int nowa=6,nowb=8;y%=60;int x=y%10,p=y%12;std::cout<<a[(nowa+x)%10]<<b[(nowb+p)%12]; 
}
signed main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);int t=1;//std::cin>>t;while(t--){solve();}return 0;
} 

P8697 [藍橋杯 2019 國 C] 最長子序列 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

?完全用不上dp,指針模擬即可。

#include<bits/stdc++.h>
using ll=unsigned long long;
using i128=__int128;
//#define int ll 
const int N=1e5+10;void solve()
{std::string s,t;std::cin>>s>>t;int cnt=0;for(int i=0;i<s.length();i++){if(s[i]==t[cnt]) cnt++;}std::cout<<cnt<<'\n';
}
signed main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);int t=1;//std::cin>>t;while(t--){solve();}return 0;
} 

P8654 [藍橋杯 2017 國 C] 合根植物 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

這題想到并查集就是個板子題了,然后就是最后數集合的個數就直接數有幾個根即可。

考前還是要復習一下并查集的板子。

#include<bits/stdc++.h>
using ll=unsigned long long;
using i128=__int128;
//#define int ll 
const int N=1e6+10;
int p[N];
ll find(int x)
{if(p[x]!=x){p[x]=find(p[x]);}return p[x];	
}
void merge(int a,int b)
{int pa=find(a),pb=find(b);if(pa!=pb) {p[pa]=pb;}
}
void solve()
{int n,m;std::cin>>m>>n;for(int i=1;i<=m*n;i++){p[i]=i;}int k;std::cin>>k;while(k--){int a,b;std::cin>>a>>b;merge(a,b);}ll ans=0;for(int i=1;i<=m*n;i++){if(p[i]==i) ans++;}std::cout<<ans<<'\n';
}
signed main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);int t=1;//std::cin>>t;while(t--){solve();}return 0;
} 

P8604 [藍橋杯 2013 國 C] 危險系數 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

題意就是輸出a到b中間有幾個點是必走的。

這樣,我們數出a到b一共有幾條路,然后對每次正確的路經過的點計數。統計有多少個點經過的次數與總路線數相同就必走的點。

#include<bits/stdc++.h>
using ll=unsigned long long;
using i128=__int128;
//#define int ll 
const int N=1e6+10;
std::vector<int> g[N];
int s,e;
ll cnt=0;
bool st[N];
int c[N];
int n,m;
void dfs(int x)
{if(x==e){cnt++;for(int i=1;i<=n;i++){if(st[i]) c[i]++;}return ;}for(auto i:g[x]){if(st[i]) continue;st[i]=1;dfs(i);st[i]=0;}
}
void solve()
{std::cin>>n>>m;while(m--){int a,b;std::cin>>a>>b;g[a].push_back(b);g[b].push_back(a);}//u到v必須經過的點 std::cin>>s>>e;st[s]=1;dfs(s); if(cnt==0){std::cout<<-1<<'\n';return ;}ll ans=0;for(int i=1;i<=n;i++){if(c[i]==cnt) ans++;}ans-=2;std::cout<<ans<<'\n';
}
signed main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);int t=1;//std::cin>>t;while(t--){solve();}return 0;
} 

?P8615 [藍橋杯 2014 國 C] 拼接平方數 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

模擬即可。

拼接平方數的定義是,這個數本身是完全平方數,還能拆成2個完全平方數。

#include<bits/stdc++.h>
using ll=unsigned long long;
using i128=__int128;
//#define int ll 
const int N=1e6+10;
std::vector<int> g[N];
int s,e;
ll cnt=0;
bool is(int x)
{int t=std::sqrt(x);return t*t==x;
}
void solve()
{int a,b;std::cin>>a>>b;for(int i=a;i<=b;i++){std::string s=std::to_string(i);for(int j=1;j<s.length();j++){int x=i/std::pow(10,j);int y=i%((int)std::pow(10,j));if(x==0||y==0) continue;if(is(i)&&is(x)&&is(y)){std::cout<<i<<'\n';break;}}}}
signed main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);int t=1;//std::cin>>t;while(t--){solve();}return 0;
} 

P8641 [藍橋杯 2016 國 C] 贏球票 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

模擬即可。

#include<bits/stdc++.h>
using ll=long long;
using ull=unsigned long long;
#define fir first
#define sec second
#define int llconst int N=1e6+10;
const int mod=1e9+7;int a[N];
bool st[N];
void solve()
{int n;std::cin>>n;for(int i=0;i<n;i++){std::cin>>a[i];}ll maxn=0,now=1,cnt=1;for(int i=0;i<n;i++){	memset(st,0,sizeof st);ll s=0;cnt=1,now=i;while(1){while(st[now%n]||a[now%n]!=cnt){	if(now>100000) break;if(st[now%n]) {now++;continue;}now++,cnt++;}if(a[now%n]==cnt&&st[now%n]==0){st[now%n]=1;s+=a[now%n];cnt=1;now++;}else break;}//std::cout<<i<<" "<<s<<'\n';maxn=std::max(maxn,s);}std::cout<<maxn<<'\n';
}
signed main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);int t=1;//std::cin>>t;while(t--){solve();}return 0;
}

P9421 [藍橋杯 2023 國 B] 班級活動 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

一點點思維。

重復的是必須要改的,然后缺的隊數也是至少要改的,取個最大值即可。?

#include<bits/stdc++.h>
using ll=long long;
using ull=unsigned long long;
#define fir first
#define sec second
#define int llconst int N=1e6+10;
const int mod=1e9+7;int a[N];
void solve()
{int n;std::cin>>n;std::map<int,int> mp;for(int i=1;i<=n;i++){std::cin>>a[i];mp[a[i]]++;}ll ans=0,cnt=0,p=0;for(auto i:mp){if(i.sec>=2){ans+=i.sec-2;//至少要改這么多 cnt++;//有幾隊 }else{p++;} }//湊好了cnt隊,必須要改的 std::cout<<std::max((n-cnt*2)/2,ans)<<'\n';
}
signed main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);int t=1;//std::cin>>t;while(t--){solve();}return 0;
}

P8700 [藍橋杯 2019 國 B] 解謎游戲 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

我寫不出來看的題解感覺好簡單,有點接近cf思維題了。

P8700 [藍橋杯 2019 國 B] 解謎游戲 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

#include<bits/stdc++.h>
using ll=long long;
using ull=unsigned long long;
#define fir first
#define sec second
#define int llconst int N=1e6+10;
const int mod=1e9+7;int a[N];
bool st[N];
void solve()
{std::string a,b,c;std::cin>>a>>b>>c;std::map<char,int> mp;for(int i=0;i<4;i++){mp['G']=mp['Y']=mp['R']=0;mp[a[i]]++,mp[b[i]]++,mp[c[i]]++;mp[a[i+4]]++,mp[a[i+8]]++;				mp[b[i+4]]++;//std::cout<<mp['G']<<" "<<mp['R']<<" "<<mp['Y']<<'\n';if(mp['G']==3&&mp['R']==2&&mp['Y']==1){continue;}std::cout<<"NO\n";return ;} std::cout<<"YES\n";
}
signed main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);int t=1;std::cin>>t;while(t--){solve();}return 0;
}

P8692 [藍橋杯 2019 國 C] 數正方形 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

?推結論。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod = 1e9+7;
int n,ans;
signed main()
{cin>>n;for(int i = 1;i<n;i++)ans+=i*(n-i)*(n-i),ans%=mod;cout<<ans;return 0;
}

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

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

相關文章

【傳知代碼】無監督動畫中關節動畫的運動表示-論文復現

文章目錄 概述動畫技術的演進原理介紹核心邏輯環境配置/部署方式小結 本文涉及的源碼可從無監督動畫中關節動畫的運動表示該文章下方附件獲取 概述 該文探討了動畫在教育和娛樂中的作用&#xff0c;以及通過數據驅動方法簡化動畫制作的嘗試。近期研究通過無監督運動轉移減少對…

Java進階學習筆記30——BigDecimal

BigDecimal&#xff1a; 用于解決浮點型運算的&#xff0c;出現結果失真的問題。 運行結果&#xff1a; package cn.ensource.d4_bigdecimal;import java.math.BigDecimal;public class Test {public static void main(String[] args) {// 目標&#xff1a;了解BigDecimal類do…

RustGUI學習(iced/iced_aw)之擴展小部件(二十七):如何使用number_input部件?

前言 本專欄是學習Rust的GUI庫iced的合集,將介紹iced涉及的各個小部件分別介紹,最后會匯總為一個總的程序。 iced是RustGUI中比較強大的一個,目前處于發展中(即版本可能會改變),本專欄基于版本0.12.1. 概述 這是本專欄的第二十七篇,主要講述number_input部件的使用,會…

8、Qt—Log4Qt使用小記2(每日產生文件)

前言&#xff1a; 開發平臺&#xff1a;Win10 64位 開發環境&#xff1a;Qt Creator 13.0.0 構建環境&#xff1a;Qt 5.15.2 MSVC2019 64位 例如&#xff1a;上一篇文章中筆者記錄了Log4qt的編譯及配置使用&#xff0c;這篇文章重點寫下每天產生文件到指定文件夾中&#xff0c;…

5.1 Go 函數的定義與調用

&#x1f49d;&#x1f49d;&#x1f49d;歡迎蒞臨我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:「stormsha的主頁」…

Spring Boot集成testcontainers快速入門Demo

1.什么是testcontainers&#xff1f; Testcontainers 是一個用于創建臨時 Docker 容器進行單元測試的 Java 庫。當我們想要避免使用實際服務器進行測試時&#xff0c;它非常有用。&#xff0c;官網介紹稱支持50多種組件。? 應用場景 數據訪問層集成測試&#xff1a; 使用My…

ubuntu20安裝Labelme

conda create --namelabelme python3 進入conda環境 source activate labelme 安裝labelme pip install labelme 遇到網絡問題 使用清華源 pip install labelme -i https://pypi.tuna.tsinghua.edu.cn/simple/ 輸入labelme 打開

Google的MLP-MIXer的復現(pytorch實現)

Google的MLP-MIXer的復現&#xff08;pytorch實現&#xff09; 該模型原論文實現用的jax框架實現&#xff0c;先貼出原論文的代碼實現&#xff1a; # Copyright 2024 Google LLC. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may …

GEC210編譯環境搭建

一、下載編譯工具鏈 下載&#xff1a;點擊跳轉 二、解壓到 /usr/local/arm 目錄 sudo mv gec210.zip /usr/local/arm cd /usr/local/arm sudo unzip gec210.zip 三、添加到環境變量 PATH/usr/local/arm/arm-cortex_a8-linux-gnueabi-4.7.3/bin:$PATH 四、測試驗證 在終端…

python數據分析-基于數據挖掘對APP評分的預測

前言 當我們談論關于APP用戶分析與電子商務之間的聯系時&#xff0c;機器學習在這兩個領域的應用變得至關重要。App用戶分析和電子商務之間存在著密切的關聯&#xff0c;因為用戶行為和偏好的深入理解對于提高用戶體驗、增加銷售以及優化產品功能至關重要。故本文基于K-近鄰模…

OFDM 802.11a的FPGA實現(二十)使用AXI-Stream FIFO進行跨時鐘(含代碼)

目錄 1.前言 2.AXI-Stream FIFO時序 3.AXI-Stream FIFO配置信息 4.時鐘控制模塊MMCM 5.ModelSim仿真 6.總結 1.前言 至此&#xff0c;通過前面的文章講解&#xff0c;對于OFDM 802.11a的發射基帶的一個完整的PPDU幀的所有處理已經全部完成&#xff0c;其結構如下圖所示&…

opencv-C++ VS2019配置安裝

最新opencv-c安裝及配置教程(VS2019 C & opencv4.4.0)_c opencv配置-CSDN博客

夜雨觸花感懷

夜雨觸花感懷 雨落有軌跡&#xff0c;業成無坦途。 ?雞毛飛虛空&#xff0c;尋德問心路。 ?恰如求耕耘&#xff0c;大話量寸土。 ?好吃品五味&#xff0c;難得評真俗。

CAN總線簡介

1. CAN總線概述 1.1 CAN定義與歷史背景 CAN&#xff0c;全稱為Controller Area Network&#xff0c;是一種基于消息廣播的串行通信協議。它最初由德國Bosch公司在1983年為汽車行業開發&#xff0c;目的是實現汽車內部電子控制單元&#xff08;ECUs&#xff09;之間的可靠通信。…

用Vuex存儲可配置下載的ip地址(用XML進行ajax請求配置文件)

1.在public文件夾下創建一個名為Configuration的文件在創建一個Configuration.txt里面就放IP地址&#xff08;這里的名字可以隨便命名一定性的被人解讀文件含義&#xff09; 例如&#xff1a; http://172.171.208.1:80032.在store文件夾中創建一個名為 ajaxModule.js 的 Vuex …

2. CSS選擇器與偽類

2.1 基本選擇器回顧 在開始介紹CSS3選擇器之前&#xff0c;我們先回顧一下CSS的基本選擇器。這些選擇器是所有CSS開發的基礎。 2.1.1 元素選擇器 元素選擇器用于選中指定類型的HTML元素。 /* 選中所有的<p>元素 */ p {color: blue; }2.1.2 類選擇器 類選擇器用于選中…

03自動輔助導航駕駛NOP其實就是NOA

蔚來NOP是什么意思&#xff1f;蔚來NOP是啥 蔚來NOP的意思就是NavigateonPilot智能輔助導航駕駛&#xff0c;也就是大家俗稱的高階輔助駕駛&#xff0c;在車主設定好導航路線&#xff0c;并且符合開啟NOP條件的前提下&#xff0c;蔚來NOP可以代替駕駛員完成從A點到B點的智能輔助…

深入理解數倉開發(二)數據技術篇之數據同步

1、數據同步 數據同步我們之前在數倉當中使用了多種工具&#xff0c;比如使用 Flume 將日志文件從服務器采集到 Kafka&#xff0c;再通過 Flume 將 Kafka 中的數據采集到 HDFS。使用 MaxWell 實時監聽 MySQL 的 binlog 日志&#xff0c;并將采集到的變更日志&#xff08;json 格…

【二叉樹】:LeetCode:100.相同的數(分治)

&#x1f381;個人主頁&#xff1a;我們的五年 &#x1f50d;系列專欄&#xff1a;初階初階結構刷題 &#x1f389;歡迎大家點贊&#x1f44d;評論&#x1f4dd;收藏?文章 1.問題描述&#xff1a; 2.問題分析&#xff1a; 二叉樹是區分結構的&#xff0c;即左右子樹是不一…