2022藍橋杯省賽C++A組初嘗試-創(chuàng)新互聯(lián)

前言

耗時三個半小時,看看自己不懂的有多少,以便明確后續(xù)備賽2023方向

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比西鄉(xiāng)網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式西鄉(xiāng)網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋西鄉(xiāng)地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。

耗時3個半小時,只拿了18分,沒學過,時間再多也做不出來,有奧數(shù)那感覺了?

據(jù)說藍橋杯省3得做對 2填空 + 2大題(30分),省2要 2填空 + 3大題(45分),省1需要 2填空 + 4大題(60分)

題目 1,2021: [藍橋杯2022初賽] 裁紙刀????????耗時10分鐘,到手5分

題目

小藍有一個裁紙刀,每次可以將一張紙沿一條直線裁成兩半。
小藍用一張紙打印出兩行三列共 6 個二維碼,至少使用九次裁出來,下圖給出了一種裁法

在上面的例子中,小藍的打印機沒辦法打印到邊緣,所以邊緣至少要裁4次。
另外,小藍每次只能裁一張紙,不能重疊或者拼起來裁。
如果小藍要用一張紙打印出 20 行 22 列共 440 個二維碼,他至少需要裁多少次??

分類:入門題,模擬

我的代碼??????????

口口口? ?此時行數(shù)n = 2, 列數(shù)m = 3, 由題目可知第一步裁掉邊緣要4次
口口口

IIIIIIIIII>>>>>> ?第二步:豎著裁成這樣子

口? ??口? ??口
口? ??口? ??口? ? ? 要裁 4 + 2 次,2 = m - 1,第三步:

口? ??口? ??口

口? ??口? ??口? 把每條裁開,要裁 4 + 2 + 3 次,3 = m(n - 1)

再在草稿紙上畫出n = 3, m = 4裁掉的過程,可以驗證正確

∴ 一共要裁 4 + (m - 1) + m(n - 1) = mn + 3 次,代入n = 20, m = 22可得443

2,2022: [藍橋杯2022初賽] 滅鼠先鋒????????耗時50分鐘,到手5分

題目

滅鼠先鋒是一個老少咸宜的棋盤小游戲,由兩人參與,輪流操作。
滅鼠先鋒的棋盤有各種規(guī)格,本題中游戲在兩行四列的棋盤上進行。
游戲的規(guī)則為:兩人輪流操作,每次可選擇在棋盤的一個空位上放置一個棋子,或在同一行的連續(xù)兩個空位上各放置一個棋子,放下棋子后使棋盤放滿的一方輸?shù)粲螒颉?br />小藍和小喬一起玩游戲,小藍先手,小喬后手。小藍可以放置棋子的方法很多,通過旋轉(zhuǎn)和翻轉(zhuǎn)可以對應如下四種情況:

XOOO XXOO OXOO OXXO
OOOO OOOO OOOO OOOO

其中 O 表示棋盤上的一個方格為空,X 表示該方格已經(jīng)放置了棋子。
請問,對于以上四種情況,如果小藍和小喬都是按照對自己最優(yōu)的策略來玩游戲,小藍是否能獲勝。
如果獲勝,請用 V 表示,否則用 L 表示。
請將四種情況的勝負結果按順序連接在一起提交。
這是一道結果填空的題,你只需要算出結果后輸出即可。
本題的結果為一個長度為 4 的由大寫字母 V 和 L 組成的字符串,如 VVLL,在提交答案時只需輸出這個字符串

分類:基礎題,博弈

我的代碼??????????

首先小藍先手(看草稿紙,假設小藍為o,小喬為x),兩行四列共8格子,所以當一次放 2 棋子的次數(shù)為0,2,4時,必然小喬放滿結束游戲,此時小藍贏。由于都有最優(yōu)策略,4次 2 棋子的情況不會有,所以注意0次2棋子和2次2棋子即可。

? 然后我對照著四種情況,假設自己是小喬,努力找小藍必輸?shù)那闆r,所有情況試一遍找不到小藍必輸,則默認必贏,也就是V。同時,基于上面找到的規(guī)律,小藍下一步棋子我可以往后看3步,大大節(jié)省了時間。同時注意 2棋子 只能放于同一行連續(xù)兩個,這又是個限制條件,只需占據(jù)中間兩豎即可限制對方。

? 所以最后推出LLLV

3,2023: [藍橋杯2022初賽] 求和????????耗時20分鐘,到手7分?

題目

給定n個整數(shù)a[1],a[2],...,a[n],求兩兩相乘再相加的和,即
S=a[1]·a[2]+a[1]·a[3]+...+a[1]·a[n]+a[2]·a[3]+...+a[2]·a[n]+...+a[n-1]·a[n]

輸入

第一行為正整數(shù)n,第二行為n個整數(shù)。
30%的數(shù)據(jù):2≤n≤1000,1≤a[i]≤100。
100%的數(shù)據(jù):2≤n≤200000,1≤a[i]≤1000。

輸出

輸出一個數(shù)字表示答案S。

輸入

4
1 3 6 9

輸出

117

分類:基礎題,思維題?

我的代碼??????????Accepted 70%? ?

#includeusing namespace std;

int a[200020];

int main()
{
    int n;
    cin>>n;
    for(int i = 0; i< n; ++i)
        cin>>a[i];
    long long sum = 0;
    for(int i = 0; i< n - 1; ++i)
        for(int j = i + 1; j< n; ++j) {
            sum  = sum + a[i] * a[j];
        }
    cout<

別人代碼?Accepted 100%

#includeusing namespace std;

int a[200020];

int main()
{
    int n;
    cin>>n;
    for(int i = 0; i< n; ++i)
        cin>>a[i];//輸入數(shù)組
    long long sum = 0, temp = 0;

    for(int i = 0; i< n; ++i) {
        sum += temp * a[i];
        temp += a[i];//保存上一個數(shù)據(jù)
    }//通過中間變量temp,我們不用打兩層for循環(huán)
    cout<
4,2024: [藍橋杯2022初賽] 選數(shù)異或????????耗時2小時,到手1分

題目

給定一個長度為 n 的數(shù)列A1,A2,... , An 和一個非負整數(shù) x
給定 m 次查詢, 每次詢問能否從某個區(qū)間 [l, r] 中選擇兩個數(shù)使得他們的異或等于 x

輸入

輸入第一行包含三個整數(shù)n,m,x
第二行包含n個整數(shù)A1,A2,...,An
接下來m行,每行兩個整數(shù)l,r表示詢問區(qū)間[l, r]
20%的測試數(shù)據(jù):1≤n,m≤100;
40%的測試數(shù)據(jù):1≤n,m≤1000;
100%的測試數(shù)據(jù):1≤n,m≤100000,0≤x,Ai<2^20,1≤l≤r≤n;

輸出

對于每個詢問, 如果該區(qū)間內(nèi)存在兩個數(shù)的異或為 x 則輸出yes, 否則輸出no

輸入

4 4 1
1 2 3 4
1 4
1 2
2 3
3 3

輸出

yes
no
yes
no

分類:進階題,線段樹,ST表?

我的代碼??Accepted 10%??

#includeusing namespace std;

int a[100010];

int main()
{
    long long n, m, x;//n個整數(shù), m行查詢, 能否異或等于x
    cin>>n>>m>>x;
    long long left, right;

    for(int i = 1; i<= n; ++i)
        cin>>a[i];//輸入n個整數(shù)

    while(m) {
        int flag = 1;
        cin>>left>>right;//表示區(qū)間[left, right]
        for(int i = left; i< right; ++i) {//外層for
            int temp = a[i]^x;
            for(int j = i + 1; j<= right; ++j) {//內(nèi)層for
                if(temp == a[j]) {
                    cout<<"yes"<

解題基本思路是

若 a^b == x,則 a^x == b 且 b^x == a

#includeusing namespace std;

int main()
{
    int a = 3^5;
    int b = a^3;
    int c = a^5;
    cout<

輸出

5
3

但我還是不會,看看答案代碼

#includeusing namespace std;
const int maxn = 100000 + 10;
int tree[maxn<< 2];
int Left[maxn], pos[(1<< 20) + 10];
int a[maxn], n, m, x;

//線段樹模板
void build(int o, int l, int r)
{
    if(l == r)
    {
        tree[o] = Left[l];
        return;
    }
    int mid = (l + r) >>1;
    build(o<< 1, l, mid);
    build(o<< 1 | 1, mid + 1, r);
    tree[o] = max(tree[o<< 1], tree[o<< 1 | 1]);
}
int query(int o, int l, int r, int L, int R)
{
    if(L<= l && r<= R)return tree[o];
    int mid = (l + r) >>1;
    int ans = 0;
    if(L<= mid)ans = max(ans, query(o<< 1, l, mid, L, R));
    if(R >mid)ans = max(ans, query(o<< 1 | 1, mid + 1, r, L, R));
    return ans;
}

int main()
{
    scanf("%d%d%d", &n, &m, &x);
    for(int i = 1; i<= n; i++) //預處理Left數(shù)組
    {
        scanf("%d", &a[i]);
        Left[i] = pos[a[i] ^ x];
        pos[a[i]] = i;
    }
    build(1, 1, n);//線段樹建樹
    while(m--)
    {
        int l, r;
        scanf("%d%d", &l, &r);
        if(query(1, 1, n, l, r) >= l)//查詢區(qū)間最值
            printf("yes\n");
        else
            printf("no\n");
    }
    return 0;
}
總結?

容易發(fā)現(xiàn),2022年的題目普遍難于往年,尤其是A組,最難,比研究生組都難,,,

然后我統(tǒng)計了下2022Python,C++,Java的A,B,G組題目中,每個類型出現(xiàn)的次數(shù):

考的最多的是:

模擬,數(shù)論,線段樹,動態(tài)規(guī)劃

里面比較簡單而目前未掌握的有:

二分,差分,貪心,鏈表,博弈,枚舉

多余的解釋 - 許嵩 - 單曲 - 網(wǎng)易云音樂

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

本文名稱:2022藍橋杯省賽C++A組初嘗試-創(chuàng)新互聯(lián)
URL標題:http://www.muchs.cn/article2/pcgic.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設計公司域名注冊、企業(yè)網(wǎng)站制作標簽優(yōu)化、虛擬主機、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)