2019 第十屆藍橋杯大賽軟件類省賽 C/C++ 大學 A 組 【部分題解】

聲明: 這些的答案不是官方答案,都是我自己做的,僅供參考。一起加油

試題 A: 平方和

本題總分:55 '
【問題描述】

小明對數位中含有 20192、 0、 1、 9 的數字很感興趣,在114040 中這樣的數包括 129101、 2、 9、 10323932、 394040,共 2828 個,他們的和是 574574,平方和是 1436214362。注意,平方和是指將每個數分別平方後求和。
請問,在 1120192019 中,所有這樣的數的平方和是多少?

分析:

本題答案:2658417853

參考代碼

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

ll sum = 0;

bool f(int x) {
    while (x) {
        int t = x % 10;
        x /= 10;
        if (t == 2 || t == 0 || t == 1 || t == 9) 
        	return true;
    }
    return false;
}

/// 2658417853

int main() {
    for (int i = 1; i <= 2019; i++) {
        if (f(i)) sum += i *  1ll * i;
    }
    cout << sum <<endl;
    return 0;
}

試題 B: 數列求值

本題總分: 55 &#x27;
【問題描述】
給定數列 1,1,1,3,5,9,17,1, 1, 1, 3, 5, 9, 17, …,從第 44 項開始,每項都是前 33 項的和。求第 2019032420190324 項的最後 44 位數字。

分析:

直接遞推,不需要那麼大的數組,只要求最後四位數,每次同餘即可

本題答案:4659

參考代碼

#include <bits/stdc++.h>

using namespace std;

int a[4] = {1,1,1};

/// 4659

int main() {
    for (int i = 0; i < 20190324 - 3; i++) {
        int s = a[0] + a[1] + a[2];
        s %= 10000;
        a[0] = a[1];
        a[1] = a[2];
        a[2] = s;
    }
    cout << a[2] << endl;
    return 0;
}

試題 C: 最大降雨量

本題總分: 1010 &#x27;

【問題描述】

由於沙之國長年乾旱,法師小明準備施展自己的一個神祕法術來求雨。這個法術需要用到他手中的 4949 張法術符,上面分別寫着 1149494949 個數字。法術一共持續 77 周,每天小明都要使用一張法術符,法術符不能重複使
用。每週,小明施展法術產生的能量爲這周 77 張法術符上數字的中位數。法術施展完 77 周後,求雨將獲得成功,降雨量爲 77 周能量的中位數。由於乾旱太久,小明希望這次求雨的降雨量儘可能大,請大最大值是多少?

分析:

貪心的來放就行,我們的第一感覺應該就是第一週放171-7,第二週放8148 - 14,……,第七週放 434943 - 49。這樣的話我們發現最大值取決於第四周的中位數,和其他周的沒關係,又可以發現,第5675,6,7周只需要保證每週的中位數大於第44周的中位數即可,我們可以採用下面的方案。(見下圖)
在這裏插入圖片描述
只需要保證綠色部分按照方案中的放,其他的隨便放即可,都不會影響答案

所以這題答案爲: 3434

試題 D: 迷宮

本題總分: 1010&#x27;
【問題描述】
下圖給出了一個迷宮的平面圖,其中標記爲 11 的爲障礙,標記爲 00 的爲可以通行的地方。

010000
000100
001001
110000

迷宮的入口爲左上角,出口爲右下角,在迷宮中,只能從一個位置走到這個它的上、下、左、右四個方向之一。
對於上面的迷宮,從入口開始,可以按DRRURRDDDR 的順序通過迷宮,一共 10 步。其中D、 U、 L、 R 分別表示向下、向上、向左、向右走。對於下面這個更復雜的迷宮(30 行 50列),請找出一種通過迷宮的方式,其使用的步數最少,在步數最少的前提下,請找出字典序最小的一個作爲答案。請注意在字典序中D<L<R<U。(如果你把以下文字複製到文本文件中,請務
必檢查複製的內容是否與文檔中的一致。在試題目錄下有一個文件 maze.txt(如下),內容與下面的文本相同)

01010101001011001001010110010110100100001000101010
00001000100000101010010000100000001001100110100101
01111011010010001000001101001011100011000000010000
01000000001010100011010000101000001010101011001011
00011111000000101000010010100010100000101100000000
11001000110101000010101100011010011010101011110111
00011011010101001001001010000001000101001110000000
10100000101000100110101010111110011000010000111010
00111000001010100001100010000001000101001100001001
11000110100001110010001001010101010101010001101000
00010000100100000101001010101110100010101010000101
11100100101001001000010000010101010100100100010100
00000010000000101011001111010001100000101010100011
10101010011100001000011000010110011110110100001000
10101010100001101010100101000010100000111011101001
10000000101100010000101100101101001011100000000100
10101001000000010100100001000100000100011110101001
00101001010101101001010100011010101101110000110101
11001010000100001100000010100101000001000111000010
00001000110000110101101000000100101001001000011101
10100101000101000000001110110010110101101010100001
00101000010000110101010000100010001001000100010101
10100001000110010001000010101001010101011111010010
00000100101000000110010100101001000001000000000010
11010000001001110111001001000011101001011011101000
00000110100010001000100000001000011101000000110011
10101000101000100010001111100010101001010000001000
10000010100101001010110000000100101010001011101000
00111100001000010000000110111000000001000000001011
10000001100111010111010001000110111010101101111000

分析:

這題沒的說,典型的bfs,記錄路徑,在查找的時候按照題目要求的進行查找(先下,在左…),還有就是在保存路徑的時候還要記錄下本次是往那個反向走的,這個參數。還有這個讀入文件有點坑,建議採用文件的方式讀入讀出。

本地答案如下(僅供參考):DDDDRRURRRRRRDRRRRDDDLDDRDDDDDDDDDDDDRDDRRRURRUURRDDDDRDRRRRRRDRRURRDDDRRRRUURUUUUUUULULLUUUURRRRUULLLUUUULLUUULUURRURRURURRRDDRRRRRDDRRDDLLLDDRRDDRDDLDDDLLDDLLLDLDDDLDDRRRRRRRRRDDDDDDRR

參考代碼

#include <bits/stdc++.h>

using namespace std;
const int maxn = 1e2 + 10;
typedef long long ll;

#define fi first
#define se second
#define pii pair<int,int>

char mp[maxn][maxn];
int vis[maxn][maxn];
pair<pii, char> pre[maxn][maxn];

/// D < L < R < U
string ss = "DLRU";
int Move[4][2] = {1,0,  0,-1,  0,1,  -1,0};
int n = 30, m = 50;

void bfs() {
    queue<pii> q;
    q.push(pii(0,0));
    vis[0][0] = 1;
    pre[0][0] = make_pair(pii(-1,-1), ' ');
    while (!q.empty()) {
        pii u = q.front(); q.pop();
        int x = u.fi, y = u.se;
        for (int i = 0; i < 4; i++) {
            int tox = x + Move[i][0];
            int toy = y + Move[i][1];
            if (tox < 0 || tox >= n || toy < 0
                || toy >= m || vis[tox][toy] ||
            mp[tox][toy] == '1') {
                continue;
            }
            vis[tox][toy] = 1;
            pre[tox][toy] = make_pair(u, ss[i]);
            q.push(pii(tox, toy));
        }

    }
}

void print(int x, int y) {
    if (x == -1 && y == -1) {
        return ;
    }
    print(pre[x][y].fi.fi, pre[x][y].fi.se);
    cout << pre[x][y].se;
}

int main() {
    freopen("C:\\Users\\Administrator\\Desktop\\in.txt", "r", stdin);
    freopen("C:\\Users\\Administrator\\Desktop\\out.txt", "w", stdout);
    for (int i = 0; i < n; i++) {
        scanf("%s", mp[i]);
    }
    bfs();
    print(29,49);
    return 0;
}

試題 E: RSA 解密

本題總分: 1515&#x27;
【問題描述】
RSA 是一種經典的加密算法。它的基本加密過程如下。
首先生成兩個質數 p,qn=pqd(p1)(q1)p, q,令 n = p · q,設 d 與 (p − 1) · (q − 1) 互質,則可找到 ee 使得 de(p1)(q1)1d · e 除 (p − 1) · (q − 1) 的餘數爲 1n,d,en,dn, d, e 組成了私鑰, n, d組成了公鑰。當使用公鑰加密一個整數 XnC=Xd  mod  nCX 時(小於 n),計算 C = X^d ~~mod ~~ n,則 C 是加密後的密文。當收到密文 C 時,可使用私鑰解開,
計算公式爲 X=Ce mod nX = C^e ~mod~ n。

例如,當 p=5,q=11,d=3n=55,e=27p = 5, q = 11, d = 3 時, n = 55, e = 27
若加密數字 24243  mod  55=1924,得 243~~ mod~~ 55 = 19
解密數字 191927  mod  55=2419,得 1927~~ mod ~~55 = 24

現在你知道公鑰中 n=1001733993063167141,d=212353C=20190324n = 1001733993063167141, d = 212353,同時你截獲了 別人發送的密文 C = 20190324,請問,原文是多少?

分析:

這題算有點坑吧,題意也不難讀懂,已知n,d,C,XXeep,qJavac++Javap,q,p=891234941,q=1123984201;Javan,d, C,求X,欲求X,需求e,欲求e,需求 兩個質數p,q, 其實不難求,當時比賽的時候爲求穩點,用了Java的大數類,用c++的快速冪也可以,這裏Java的僅供參考。我是一開始暴力求的兩個質數p,q, p = 891234941 , q =1123984201; 接下來就是很裸的Java大數了。

本題答案(僅供參考):652833369637334824

import java.math.BigInteger;

public class Main {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BigInteger p = BigInteger.valueOf(891234941);
		BigInteger q = BigInteger.valueOf(1123984201);
		BigInteger n = q.multiply(p);
		System.out.println(n);
		BigInteger p_1 = p.subtract(BigInteger.ONE);
		BigInteger q_1 = q.subtract(BigInteger.ONE);
		BigInteger w = p_1.multiply(q_1);
		
		BigInteger c = BigInteger.valueOf(20190324);
		BigInteger d = BigInteger.valueOf(212353);

		for (int i = 2; i < 1000000; i++) {
			BigInteger s = w.multiply(BigInteger.valueOf(i)).add(BigInteger.valueOf(1));
			if (s.mod(d).equals(BigInteger.valueOf(0))) {
				BigInteger e = s.divide(d);
				System.out.println("e = " + e);
				BigInteger x = c.modPow(d, n);
				System.out.println("x = " + x);
				BigInteger isc = x.modPow(e,n);
				System.out.println(isc);
				break;
			}
		}
	}

}

試題 F: 完全二叉樹的權值

時間限制: 1.0s 內存限制: 256.0MB

本題總分: 1515&#x27;

【問題描述】

給定一棵包含 N 個節點的完全二叉樹,樹上每個節點都有一個權值,按從上到下、從左到右的順序依次是 A1, A2, · · · AN,如下圖所示:
在這裏插入圖片描述
現在小明要把相同深度的節點的權值加在一起,他想知道哪個深度的節點權值之和最大?如果有多個深度的權值和同爲最大,請你輸出其中最小的深度。
注:根的深度是 1。

【輸入格式】

第一行包含一個整數 N。
第二行包含 N 個整數 A1, A2, · · · AN 。

【輸出格式】

輸出一個整數代表答案。

【樣例輸入】

7
1 6 5 4 3 2 1

【樣例輸出】

2

【評測用例規模與約定】

對於所有評測用例, 1 ≤ N ≤ 100000, −100000 ≤ Ai ≤ 100000。

分析 :

最基本的樹的題了把,題目上已經給出了是完全二叉樹,所以直接用數組來模擬方便些,用兩個隊列來模擬即可,每次記錄下層數,看範圍可知,答案會爆int,這裏要開longlong。

參考代碼

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

ll t[maxn];
queue<int> q1, q2;

int main() {
    int n; cin >> n;
    for (int i = 1; i <= n; i++) cin >> t[i];
    ll res = 1;
    ll ma = t[1];
    q1.push(1);
    int c = 0;
    while (q1.size()) {
        ll s = 0;
        c++;
        while (q1.size()) {
            int now = q1.front(); q1.pop();
            s += t[now];
            if (now * 2 <= n) {
                ll t1 = now * 2, t2 = now * 2 + 1;
                q2.push(t1);
                q2.push(t2);
            }
        }
        if (s > ma) {
            ma = s;
            res = c;
        }
        while (q2.size()) {
            q1.push(q2.front());
            q2.pop();
        }
    }
    cout << res << endl;
    return 0;
}

試題 G: 外賣店優先級

時間限制: 1.0s 內存限制: 256.0MB
本題總分: 2020&#x27;

【問題描述】

“飽了麼”外賣系統中維護着 N 家外賣店,編號 1 ∼ N。每家外賣店都有一個優先級,初始時 (0 時刻) 優先級都爲 0。
每經過 1 個時間單位,如果外賣店沒有訂單,則優先級會減少 1,最低減到 0;而如果外賣店有訂單,則優先級不減反加,每有一單優先級加 2。如果某家外賣店某時刻優先級大於 5,則會被系統加入優先緩存中;如果優先級小於等於 3,則會被清除出優先緩存。給定 T 時刻以內的 M 條訂單信息,請你計算 T 時刻時有多少外賣店在優先緩存中。

【輸入格式】

第一行包含 3 個整數 N、 M 和 T。
以下 M 行每行包含兩個整數 ts 和 id,表示 ts 時刻編號 id 的外賣店收到
一個訂單。

【輸出格式】

輸出一個整數代表答案。

【樣例輸入】

2 6 6
1 1
5 2
3 1
6 2
2 1
6 2

【樣例輸出】

1

【樣例解釋】

6 時刻時, 1 號店優先級降到 3,被移除出優先緩存; 2 號店優先級升到 6,加入優先緩存。所以是有 1 家店 (2 號) 在優先緩存中。

【評測用例規模與約定】

對於 80% 的評測用例, 1 ≤ N; M; T ≤ 10000。
對於所有評測用例, 1 ≤ N; M; T ≤ 100000, 1 ≤ ts ≤ T, 1 ≤ id ≤ N。.

分析:

分值都到20了,有點難度了,我們可以暴力的模擬時間軸,每個都更新來做,不過應該最多30分吧。
我的做法是用一個數組d 來記錄 當前店的優先級,以及最後修改的時間,然後每次O(1)的修改,也就是說當有一個訂單來的時候,我們纔對這個這個訂單修改相關的信息即可,不過要求所有的訂單要根據時間的順序來請求,每次請求時,判斷當前外賣店的優先級,和最後的修改的時間,我們還需要記錄優先緩存中的數量,這裏注意:要在最後再來掃一遍,來更新所有店的狀態。這裏具體解釋下樣例。

首先對樣例進行排序後爲
            時間 ~~~ 店家 ~~~~ 當前優先級~~~~~ 最後修改時間
1          1             2                           11~~~~~~~~~~ 1~~~~~~~~~~~~~2~~~~~~~~~~~~~~~~~~~~~~~~~~~1
2          1             4                           22~~~~~~~~~~ 1~~~~~~~~~~~~~4~~~~~~~~~~~~~~~~~~~~~~~~~~~2
3          1             6 33~~~~~~~~~~ 1~~~~~~~~~~~~~6(加入緩存區)~3
5          2             2                           55~~~~~~~~~~ 2~~~~~~~~~~~~~2~~~~~~~~~~~~~~~~~~~~~~~~~~~5
6          2             4                           66~~~~~~~~~~ 2~~~~~~~~~~~~~4~~~~~~~~~~~~~~~~~~~~~~~~~~~6
6          2             6 66 ~~~~~~~~~~2~~~~~~~~~~~~~6(加入緩存區)~6

最後掃一遍,發現1店,不滿足,移除緩存區,具體看代碼

參考代碼

#include <bits/stdc++.h>

using namespace std;
const int maxn = 1e5 + 10;
typedef long long ll;

#define pii pair<int,int>

int f[maxn];
int d[maxn][3];
vector<pii> a;
int r; /// 緩衝區的個數

int main() {
    int n, m, k; cin >> n >> m >> k;
    for (int i = 0; i < m; i++) {
        int x, y; cin >> x >> y;
        a.push_back(pii(x, y));
    }
    sort(a.begin(), a.end());
    for (int i = 0; i < m; i++) {
        int now = a[i].fi;
        int w = a[i].se;
        if (now > k) break;
        if (d[w][0] == 0) { /// 特判下之前沒有接到過訂單
            d[w][0] = 2;
            d[w][1] = now;
        } else {
            /// 注意特判修改時間相同時
            if (d[w][1] != now)   d[w][0] -= (now - d[w][1] - 1);
            if (d[w][0] < 0) d[w][0] = 0;
            d[w][0] += 2;
            d[w][1] = now;
            if (d[w][0] > 5 && !f[w]) {
                r++;
                f[w] = 1;
            }
            if (f[w] && d[w][0] <= 3) {
                f[w] = 0; r--;
            }
        }
    }
    for (int i = 1; i <= n; i++) {
        if (d[i][0]) {
            d[i][0] -= (k - d[i][1]);
            if (d[i][0] < 0) d[i][0] = 0;
            if (d[i][0] > 5 && !f[i]) {
                r++;
                f[i] = 1;
            }
            if (f[i] && d[i][0] <= 3) {
                f[i] = 0; r--;
            }
        }
    }
    cout << r << endl;
    return 0;
}

試題 H: 修改數組

時間限制: 1.0s 內存限制: 256.0MB
本題總分: 2020&#x27;

【問題描述】

給定一個長度爲 N 的數組 A = [A1; A2; · · · AN],數組中有可能有重複出現的整數。
現在小明要按以下方法將其修改爲沒有重複整數的數組。
小明會依次修改A2; A3; · · · ; AN。當修改 Ai 時,小明會檢查 Ai 是否在 A1 ∼ Ai−1 中出現過。如果出現過,則小明會給 Ai 加上 1 ;如果新的 Ai 仍在之前出現過,小明會持續給 Ai 加 1 ,直到 Ai 沒有在 A1 ∼ Ai−1 中出現過。當 AN 也經過上述修改之後,顯然 A 數組中就沒有重複的整數了。
現在給定初始的 A 數組,請你計算出最終的 A 數組。

【輸入格式】

第一行包含一個整數 N。
第二行包含 N 個整數 A1; A2; · · · ; AN 。

【輸出格式】

輸出 N 個整數,依次是最終的 A1; A2; · · · ; AN。

【樣例輸入】

5
2 1 1 3 4

【樣例輸出】

2 1 3 4 5

【評測用例規模與約定】
對於 80% 的評測用例, 1 ≤ N ≤ 10000。
對於所有評測用例, 1 ≤ N ≤ 100000, 1 ≤ Ai ≤ 1000000。

分析:

這題一開始看錯了,在最後壓線交的,不知道對不對,應該不對–

我思路是:因爲範圍是1e6,直接開個數組x 來表示當前位置的下一個空閒的位置。當一個Ai到來的時候,如果沒出現過,既x[Ai]爲0時,我們直接把Ai放在該位置,然後求得下一個空閒的位置,由於還要考慮當前位置已經放過的時候,所以我們把獲取下一個位置寫作一個函數,當Ai位置出現過,我們把Ai放在x[Ai]處,既下一個空閒的位置上,然後更新下放完後Ai位置的下一個空閒的位置。
我們考慮怎麼寫更新當前位置的下一個空閒位置的函數
假設正在考慮n位置
如果n-1位置訪問過,那麼我們還要考慮n+1是否訪問過,如果都訪問過(如下)
在這裏插入圖片描述
我們要更新n-1以及n的位置,而n+1的位置不用更新

當n-1位置訪問過,n+1沒有訪問過(如下)
在這裏插入圖片描述
我們同樣更新 n -1的位置和n的位置

當n-1位置沒有訪問過,n+1位置訪問過
在這裏插入圖片描述
我們只需要更新n位置即可

最後一種情況就是兩邊都沒有訪問過。

參考代碼

#include <bits/stdc++.h>

using namespace std;
const int maxn = 1e6 + 10;

int x[maxn];
vector<int> r;

int f(int n) {
    if (x[n - 1]) {
        if (x[n + 1]) {
            x[n - 1] = x[n] = x[n + 1];
        } else {
            x[n - 1] = x[n] = n + 1;
        }
    } else {
        if (x[n + 1]) {
            x[n] = x[n + 1];
        } else {
            x[n] = n + 1;
        }
    }
    return x[n];
}

int main() {
    int n; cin >>n;
    for (int i = 0; i < n; i++) {
        int s; cin >> s;
        if (x[s]) {
            int to = x[s];
            r.push_back(to);
            x[to] = f(to);
        } else {
            x[s] = f(s);
            r.push_back(s);
        }
    }

    for (int i = 0; i < r.size(); i++) {
        if (i != 0) cout << ' ';
        cout << r[i];
    }
    cout << endl;
    
    return 0;
}

試題 I: 糖果

時間限制: 1.0s 內存限制: 256.0MB
本題總分: 2525&#x27;

【問題描述】

糖果店的老闆一共有 M 種口味的糖果出售。爲了方便描述,我們將 M 種口味編號 1 ∼ M。小明希望能品嚐到所有口味的糖果。遺憾的是老闆並不單獨出售糖果,而是 K 顆一包整包出售。
幸好糖果包裝上註明了其中 K 顆糖果的口味,所以小明可以在買之前就知道每包內的糖果口味。
給定 N 包糖果,請你計算小明最少買幾包,就可以品嚐到所有口味的糖果。

【輸入格式】

第一行包含三個整數 N、 M 和 K。
接下來 N 行每行 K 這整數 T1; T2; · · · ; TK,代表一包糖果的口味。
【輸出格式】
一個整數表示答案。如果小明無法品嚐所有口味,輸出 −1。

【樣例輸入】

6 5 3
1 1 2
1 2 3
1 1 3
2 3 5
5 4 2
5 1 2

【樣例輸出】

2

【評測用例規模與約定】

對於 30% 的評測用例, 1 ≤ N ≤ 20 。
對於所有評測樣例, 1 ≤ N ≤ 100, 1 ≤ M ≤ 20, 1 ≤ K ≤ 20, 1 ≤ Ti ≤ M。

分析:

不愧是25分的題,不會做,只會暴力,應該能過30的數據,有大佬會,給小弟留言唄~~xiexie

參考代碼

#include <bits/stdc++.h>

using namespace std;
const int maxn = 1e2 + 10;

int a[maxn][maxn];

int main() {
    int n,m,k; cin >> n >> m >> k;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < k; j++) {
            cin >> a[i][j];
        }
    }
    int mi = 10000000;
    for (int i = 1; i < (1 << n); i++) {
        int t = 0;
        int cnt = 0;
        for (int j = 0; j < n; j++) {
            if (i & (1 << j)) {
                cnt++;
                for (int x = 0; x < k; x++) {
                    t |= (1 << (a[j][x] - 1));
                }
            }
        }
        if (t == ((1 << m) - 1)) {
            mi = min(mi, cnt);
        }
    }
    if (mi == 10000000) mi = -1;
    cout << mi << endl;
    return 0;
}

試題 J: 組合數問題

時間限制: 1.0s 內存限制: 256.0MB
本題總分: 2525&#x27;

【問題描述】

n;m;kn; m; k,求有多少對 (i;j)(i; j) 滿足 1in;0jmin(i;m)Cij0 ( mod k)1 ≤ i ≤ n;0 ≤ j ≤ min(i; m) 且 C_i^j ≡0~(~mod ~k)kCijijk 是質數。其中 C_i^j 是組合數,表示從 i 個不同的數中選出 j 個組成一個集合的方案數。

【輸入格式】

第一行兩個數 t; k,其中 t 代表該測試點包含 t 組詢問, k 的意思與上文中相同。接下來 t 行每行兩個整數 n; m,表示一組詢問。

【輸出格式】

輸出 t 行,每行一個整數表示對應的答案。由於答案可能很大,請輸出答
案除以 109 + 7 的餘數。

【樣例輸入】

1 2
3 3

【樣例輸出】

1

【樣例說明】

在所有可能的情況中,只有 C21=22C_2^1 = 2 是 2 的倍數

【樣例輸入】

2 5
4 5
6 7

【樣例輸出】

0
7

【樣例輸入】

3 23
23333333 23333333
233333333 233333333
2333333333 2333333333

【樣例輸出】

851883128
959557926
680723120
在這裏插入圖片描述

分析:

不會,本來還想暴力的打個表,混兩個點的數據,後來檢查了一遍,也沒寫。真難…

總結:

這是我第二次參加藍橋杯了,去年參加的B組的c++,最後水個省一,國二,由於去年的下半年一直在準備考研,一直都以爲這次的比賽被複試耽誤了,最後還是參加上了,總的來說感覺今年的A組的題和去年B組難度差不多,最後兩個題是真的難,之前我還是有點依賴板子,比如數論相關的題,都是靠板子來打比賽,也是我好久沒敲過代碼了,中間挺了快大半年,思路都跟不上,還好出錯,一個bug找一個小時,還是太菜了,感覺這次最多也是個省二啦,重在參與,還是得認真codeing~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章