藍橋杯題集
題目連結
acwing藍橋杯
1.錯誤票據
難度:簡單
時/空限制:1s / 64MB
來源:第四屆藍橋杯省賽C++A/B組,第四屆藍橋杯省賽JAVAA/B組
題目描述
某涉密單位下發了某種票據,並要在年終全部收回。
每張票據有唯一的ID號。
全年所有票據的ID號是連續的,但ID的開始數碼是隨機選定的。
因為工作人員疏忽,在錄入ID號的時候發生了一處錯誤,造成了某個ID斷號,另外一個ID重號。
你的任務是通過程式設計,找出斷號的ID和重號的ID。
假設斷號不可能發生在最大和最小號。
輸入格式
第一行包含整數 \(N\),表示後面共有 \(N\) 行資料。
接下來 \(N\) 行,每行包含空格分開的若干個(不大於100個)正整數(不大於100000),每個整數代表一個ID號。
輸出格式
要求程式輸出1行,含兩個整數 \(m,n\),用空格分隔。
其中,\(m\)表示斷號ID,\(n\)表示重號ID。
資料範圍
\(1≤N≤100\)
輸入樣例:
2
5 6 8 11 9
10 12 9
輸出樣例:
7 9
解題思路
模擬
資料較小,用陣列下標標記,模擬一遍即可~ 關鍵在於字串的處理~
- 時間複雜度:\(O(n)\)
#include<cstdio> #include<cstring> #include<sstream> #include<iostream> #include<algorithm> using namespace std; int mn=0x3f3f3f3f,mx=0; int v[100010],x; int main() { int n; memset(v,0,sizeof v); scanf("%d",&n); getchar(); while(n--) { string s; stringstream ss; getline(cin,s); ss.str(s); while(ss>>x) { v[x]++; mx=max(mx,x); mn=min(mn,x); } } int r1,r2; for(int i=mn;i<=mx;i++) if(v[i]==0)r1=i; else if(v[i]==2)r2=i; printf("%d %d",r1,r2); return 0; }
2.買不到的數目
難度:簡單
時/空限制:1s / 64MB
來源:第四屆藍橋杯省賽C++A組,第四屆藍橋杯省賽JAVAC組
題目描述
小明開了一家糖果店。
他別出心裁:把水果糖包成4顆一包和7顆一包的兩種。
糖果不能拆包賣。
小朋友來買糖的時候,他就用這兩種包裝來組合。
當然有些糖果數目是無法組合出來的,比如要買 10 顆糖。
你可以用計算機測試一下,在這種包裝情況下,最大不能買到的數量是17。
大於17的任何數字都可以用4和7組合出來。
本題的要求就是在已知兩個包裝的數量時,求最大不能組合出的數字。
輸入格式
兩個正整數 \(n,m\),表示每種包裝中糖的顆數。
輸出格式
一個正整數,表示最大不能買到的糖數。
資料範圍
\(2≤n,m≤1000\),
保證資料一定有解。
輸入樣例:
4 7
輸出樣例:
17
解題思路
如果 \(a,b\) 均是正整數且互質,那麼由 \(ax+by,x≥0,y≥0\) 不能湊出的最大數是 \(ab−a−b\)。
- 時間複雜度:\(O(1)\)
程式碼
#include<cstdio>
using namespace std;
int n,m;
int main()
{
scanf("%d %d",&n,&m);
printf("%d",n*m-n-m);
return 0;
}
3.剪格子
難度:困難
時/空限制:1s / 64MB
來源:第四屆藍橋杯省賽C++A/C組,第四屆藍橋杯省賽JAVAA/C組
題目描述
如下圖所示,\(3×3\) 的格子中填寫了一些整數。
我們沿著圖中的紅色線剪開,得到兩個部分,每個部分的數字和都是 60。
本題的要求就是請你程式設計判定:對給定的 \(m×n\) 的格子中的整數,是否可以分割為兩個連通的部分,使得這兩個區域的數字和相等。
如果存在多種解答,請輸出包含左上角格子的那個區域包含的格子的最小數目。
如果無法分割,則輸出 0。
輸入格式
第一行包含兩個整數 \(m,n\) ,表示表格的寬度和高度。
接下來是 \(n\) 行,每行 \(m\) 個正整數,用空格分開。
輸出格式
在所有解中,包含左上角的分割區可能包含的最小的格子數目。
如果無法分割,則輸出 \(0\)。
資料範圍
\(1≤n,m<10\),
格子內的數均在1到10000之間。
輸入樣例1:
3 3
10 1 52
20 30 1
1 2 3
輸出樣例1:
3
輸入樣例2:
4 3
1 1 1 1
1 30 80 2
1 1 1 100
輸出樣例2:
10
解題思路
dfs,剪枝,字串hash,並查集
- 時間複雜度:\(()\)
程式碼