柚子快報邀請碼778899分享:c語言 藍橋杯2024省C
柚子快報邀請碼778899分享:c語言 藍橋杯2024省C
P10898 [藍橋杯 2024 省 C] 拼正方形
題目描述
小藍正在玩拼圖游戲,他有 7385137888721個 2×2的方塊和 10470245 個 1×1 的方塊,他需要從中挑出一些來拼出一個正方形,比如用 3 個 2×2 和 4 個 1×1 的方塊可以拼出一個 4×4 的正方形,用 9 個 2×2 的方塊可以拼出一個 6×6 的正方形,請問小藍能拼成的最大的正方形的邊長為多少。
輸入格式
這是一道結(jié)果填空的題,你只需要算出結(jié)果后提交即可。本題的結(jié)果為一個整數(shù),在提交答案時只填寫這個整數(shù),填寫多余的內(nèi)容將無法得分。
輸出格式
這是一道結(jié)果填空的題,你只需要算出結(jié)果后提交即可。本題的結(jié)果為一個整數(shù),在提交答案時只填寫這個整數(shù),填寫多余的內(nèi)容將無法得分。
輸入輸出樣例
無
#include
#include
using namespace std;
int main()
{
long long a = 7385137888721;
int b = 10470245;
int c = sqrt(a);
c *= 2;
a -= c;
int len = c;
while (true) {
if (b >= c * 2 + 1) {
len++;
b -= (c * 2 + 1);
}
else {
break;
}
}
cout << len << endl;
return 0;
}
思路:
??????? 要想得到最大的正方形,就要把2×2的先盡可能的拼成正方形。
??????? 有一個點需要注意,a的數(shù)據(jù)類型是long long,我一開始用了int,我說用計算器算的開方和sqrt不一樣,找了好一會的原因才發(fā)現(xiàn)數(shù)據(jù)類型錯了。
P10899 [藍橋杯 2024 省 C] 勁舞團
題目描述
小藍最近迷上了一款名為“勁舞團”的游戲,具體來說,只要按照游戲中給出的鍵位提示依次按出對應(yīng)的鍵位,游戲人物便可以跟隨節(jié)奏跳舞。對于連續(xù)的 K 次正確敲擊,如果任意連續(xù)的兩次敲擊間間隔時間都小于等于 1s,那么 我們稱這是一次 K 連擊?,F(xiàn)在給出一局小藍的游戲記錄文件,log.txt 中記錄了 N 條記錄,每條記錄有三個字段,依次為正確的敲擊字符、小藍打出的字符、打出字符的時間對應(yīng)的毫秒時間戳?,F(xiàn)在請你計算下最長的 KK 連擊是多少,你 只需要輸出 K 的值。
輸入格式
為了方便評測,輸入數(shù)據(jù)已替換為 log.txt。在洛谷評測時,你可以從標準輸入讀取 log.txt,也可以從下發(fā)文件中下載。
輸出格式
這是一道結(jié)果填空的題,你只需要算出結(jié)果后提交即可。本題的結(jié)果為一個整數(shù),在提交答案時只填寫這個整數(shù),填寫多余的內(nèi)容將無法得分。
輸入輸出樣例
無
#include
using namespace std;
int main()
{
//freopen("log.txt", "r", stdin);
char true_Str, s;
long long time;
cin >> true_Str >> s >> time;
long long last = time;
int count = 1, ans = -1;
while (cin >> true_Str >> s >> time) {
if (true_Str!=s) {
count = 1;
continue;
}
if (time - last <= 1000) {
count++;
last = time;
}
else {
count = 1;
last = time;
}
ans = max(ans, count);
}
cout << ans << endl;
return 0;
}
思路:
??????? 有一個點需要注意://freopen("log.txt", "r", stdin);這一行我后來注釋掉了,因為題目會逐行輸入,不需要我去打開文件,不注釋掉反而錯了
P10900 [藍橋杯 2024 省 C] 數(shù)字詩意
題目描述
在詩人的眼中,數(shù)字是生活的韻律,也是詩意的表達。
小藍,當代頂級詩人與數(shù)學家,被賦予了“數(shù)學詩人” 的美譽。他擅長將冰冷的數(shù)字與抽象的詩意相融合,并用優(yōu)雅的文字將數(shù)學之美展現(xiàn)于紙上。
某日,小藍靜坐書桌前,目光所及,展現(xiàn)著 n 個數(shù)字,它們依次為 a1,a2,??,an?,熠熠生輝。小藍悟到,如果一個數(shù)能夠以若干個(至少兩個)連續(xù)的正整數(shù)相加表示,那么它就蘊含詩意。例如,數(shù)字 6 就蘊含詩意,因為 它可以表示為 1+2+3。而 88 則缺乏詩意,因為它無法用連續(xù)的正整數(shù)相加表示。
小藍希望他面前的所有數(shù)字都蘊含詩意,為此,他決定從這 n 個數(shù)字中刪除一部分。請問,小藍需要刪除多少個數(shù)字,才能使剩下的數(shù)字全部蘊含詩意?
輸入格式
輸入的第一行包含一個整數(shù) n,表示展示的數(shù)字個數(shù)。
第二行包含 nn 個整數(shù) a1,a2,??,an,相鄰整數(shù)之間使用一個空格分隔,表示展示的數(shù)字。
輸出格式
輸出一行包含一個整數(shù),表示小藍需要刪除的數(shù)字個數(shù),以使剩下的數(shù)字全部蘊含詩意。
輸入輸出樣例
輸入 #1
3
3 6 8
輸出 #1
1
說明/提示
【樣例說明】
在樣例中,數(shù)字 3 可以表示為 1+2,數(shù)字 66 可以表示為 1+2+3,數(shù)字 8 無法表示為連續(xù)的正整數(shù)相加,因此,需要刪除的數(shù)字個數(shù)為 1。
【評測用例規(guī)模與約定】
對于 30% 的評測用例,1≤n≤10^3,1≤ai?≤10^3。 對于所有評測用例,1≤n≤2×10^5,1≤ai?≤10^16。
#include
using namespace std;
int main()
{
int n, count = 0;
cin >> n;
ios::sync_with_stdio(false);
cin.tie();
cout.tie();
for (int i = 0; i < n; i++) {
long long a;
cin >> a;
if (a && !(a & (a - 1))) {
count++;
}
}
cout << count << endl;
return 0;
}
思路:
??????? 2的冪次就不“詩意”
P10901 [藍橋杯 2024 省 C] 封閉圖形個數(shù)
題目描述
在藍橋王國,數(shù)字的大小不僅僅取決于它們的數(shù)值大小,還取決于它們所形成的“封閉圖形”的個數(shù)。
封閉圖形是指數(shù)字中完全封閉的空間,例如數(shù)字1、2、3、5、7 都沒有形成封閉圖形,而數(shù)字 0、4、6、9 分別形成了 1 個封閉圖形,數(shù)字 8 則形成了 2 個封閉圖形。值得注意的是,封閉圖形的個數(shù)是可以累加的。例如,對于數(shù)字 68,由于 6 形成了 1 個封閉圖形,而 8 形成了 2 個,所以 68 形成的封閉圖形的個數(shù)總共為 3。
在比較兩個數(shù)的大小時,如果它們的封閉圖形個數(shù)不同,那么封閉圖形個數(shù)較多的數(shù)更大。例如,數(shù)字 41 和數(shù)字 18,它們對應(yīng)的封閉圖形的個數(shù)分別為 1 和 2,因此數(shù)字 41 小于數(shù)組 18。如果兩個數(shù)的封閉圖形個數(shù)相同,那么數(shù)值較大的數(shù)更大。例如,數(shù)字 14 和數(shù)字 41,它們的封閉圖形的個數(shù)都是 1,但 14<41,所以14 小于數(shù)字 41。如果兩個數(shù)字的封閉圖形個數(shù)和數(shù)值都相同,那么這兩個數(shù)字被認為是相等的。
小藍對藍橋王國的數(shù)字大小規(guī)則十分感興趣?,F(xiàn)在,他將給定你 n 個數(shù) a1?,a2?,?,an?,請你按照藍橋王國的數(shù)字大小規(guī)則,將這 n 數(shù)從小到大排序,并輸出排序后結(jié)果。
輸入格式
輸入的第一行包含一個整數(shù) n,表示給定的數(shù)字個數(shù)。
第二行包含 n 個整數(shù) a1?,a2?,?,an?,相鄰整數(shù)之間使用一個空格分隔,表示待排序的數(shù)字。
輸出格式
輸出一行包含 n 個整數(shù),相鄰整數(shù)之間使用一個空格分隔,表示按照藍橋王國的數(shù)字大小規(guī)則從小到大排序后的結(jié)果。
輸入輸出樣例
輸入 #1
3
18 29 6
輸出 #1
6 29 18
說明/提示
【樣例說明】
對于給定的數(shù)字序列 [18,29,[18,29,6],數(shù)字 18 的封閉圖形個數(shù)為 2,數(shù)字 29 的封閉圖形個數(shù)為 1,數(shù)字 6 的封閉圖形個數(shù)為 1。按照封閉圖形個數(shù)從小到大排序后, [29,6,18][29,6,18]。
由于數(shù)字 29 和數(shù)字 6 的封閉圖形個數(shù)相同,因此需要進一步按照數(shù)值大小對它們進行排序,最終得到 [6,29,18]。
【評測用例規(guī)模與約定】
對于 50% 的評測用例,1≤n≤2×103,1≤ai?≤105。 對于所有評測1≤n≤2×105,1≤ai?≤109。
#include
#include
using namespace std;
const long long N = 2e5 + 5;
int n;
pair
int cnt[] = { 1,0,0,0,1,0,1,0,2,1 };
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i].second;
int x = a[i].second;
while (x) {
a[i].first += cnt[x % 10];
x /= 10;
}
}
sort(a + 1, a + n + 1);
for (int i = 1; i <= n; i++)cout << a[i].second << " ";
return 0;
}
思路:
??????? 1)選擇用pair,我一開始用的是兩個vector,一個記錄封閉數(shù)字個數(shù),一個記錄數(shù)字本身,這樣有一個壞處,就是在比較的時候很容易出錯,而且代碼有點累贅
??????? 2)選擇直接用一個cnt數(shù)字記錄每個數(shù)字(10以內(nèi))所對應(yīng)的封閉數(shù)字個數(shù),不需要用if else(其實也可以用,只是這樣貌似更加簡潔?)
??????? 3)sort函數(shù)內(nèi)部記得+1,因為是從1下標開始的。
P10902 [藍橋杯 2024 省 C] 回文數(shù)組
(考慮貪心算法)
柚子快報邀請碼778899分享:c語言 藍橋杯2024省C
相關(guān)閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。