国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

第十四屆藍(lán)橋杯大賽軟件賽省賽(C/C++ 研究生組)

這篇具有很好參考價值的文章主要介紹了第十四屆藍(lán)橋杯大賽軟件賽省賽(C/C++ 研究生組)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

藍(lán)橋杯 2023年省賽真題
C/C++ 大學(xué)G組

?試題 A: 工作時長
?試題 B: 與或異或
?試題 C: 翻轉(zhuǎn)
?試題 D: 階乘的和
?試題 E: 公因數(shù)匹配
?試題 F: 奇怪的數(shù)
?試題 G: 太陽
?試題 H: 子樹的大小
?試題 ?I: 高塔
?試題 J: 反異或 01 串


除去第 F \rm F F 題,其他題目在其他組別都有出現(xiàn)過,這里就不重寫了。


奇怪的數(shù)

時間限制: 1.0 s 1.0\mathrm s 1.0s?內(nèi)存限制: 256.0 M B 256.0\mathrm{MB} 256.0MB?本題總分: 15 15 15


【問題描述】

??小藍(lán)最近在找一些奇怪的數(shù),其奇數(shù)數(shù)位上是奇數(shù),而偶數(shù)數(shù)位上是偶數(shù)。同時,這些數(shù)的任意 5 5 5 個連續(xù)數(shù)位的和都不大于 m m m
??例如當(dāng) m = 9 m = 9 m=9 時, 10101 10101 10101 12303 12303 12303 就是奇怪的數(shù),而 12345 12345 12345 11111 11111 11111 則不是。
??小藍(lán)想知道一共有多少個長度為 n n n 的上述的奇怪的數(shù)。你只需要輸出答案對 998244353 998244353 998244353 取模的結(jié)果。

【輸入格式】

??輸入一行包含兩個整數(shù) n , m n, m n,m,用一個空格分隔。

【輸出格式】

??輸出一行包含一個整數(shù)表示答案。

【樣例輸入】

5 5

【樣例輸出】

6

【評測用例規(guī)模與約定】

??對于 30 % 30\% 30% 的評測用例, n ≤ 12 n ≤ 12 n12
??對于 60 % 60\% 60% 的評測用例, n ≤ 5000 n ≤ 5000 n5000
??對于所有評測用例, 5 ≤ n ≤ 2 × 1 0 5 , 0 ≤ m ≤ 50 5 ≤ n ≤ 2 × 10^5,0 ≤ m ≤ 50 5n2×105,0m50。


動態(tài)規(guī)劃


??因為是要校驗連續(xù)的 5 5 5 個數(shù)位上的數(shù)字之和是否大于 m m m,自然能設(shè)計出狀態(tài) f i , a , b , c , d f_{i,a,b,c,d} fi,a,b,c,d?,表示第 i ? 3 i-3 i?3 個數(shù)位上的數(shù)字為 a a a i ? 2 : b i-2:b i?2:b; i ? 1 : c i-1:c i?1:c; i : d i:d i:d 的奇怪的數(shù)有多少個,容易找到狀態(tài)轉(zhuǎn)移方程: f i , a , b , c , d = ∑ f i ? 1 , e , a , b , c , a + b + c + d + e ≤ m . f_{i,a,b,c,d}=\sum f_{i-1,e,a,b,c},a+b+c+d+e\leq m. fi,a,b,c,d?=fi?1,e,a,b,c?,a+b+c+d+em.??轉(zhuǎn)移復(fù)雜度為 O ( n D 5 ) O(nD^5) O(nD5),其中 D = 5 D=5 D=5 即每個數(shù)位可能的取值的個數(shù),這樣看來復(fù)雜度就超了, 1 s \rm 1s 1s 指定是跑不出來,于是考慮維護(hù) f f f 在第二維的前綴和,具體地說我們記: g i , a , b , c , d = ∑ j = 0 a f i , j , b , c , d . g_{i,a,b,c,d}=\sum_{j=0}^af_{i,j,b,c,d}. gi,a,b,c,d?=j=0a?fi,j,b,c,d?.??則狀態(tài)轉(zhuǎn)移方程可改寫為: g i , a , b , c , d = g i , a ? 1 , b , c , d + g i ? 1 , max ? ( 0 , min ? ( 9 , m ? a ? b ? c ? d ) ) , a , b , c . g_{i,a,b,c,d}=g_{i,a-1,b,c,d}+g_{i-1,\max(0,\min(9,m-a-b-c-d)),a,b,c}. gi,a,b,c,d?=gi,a?1,b,c,d?+gi?1,max(0,min(9,m?a?b?c?d)),a,b,c?.??轉(zhuǎn)移復(fù)雜度為 O ( n D 4 ) O(nD^4) O(nD4), 1 s \rm 1s 1s 有那么一點極限,標(biāo)程很有可能不是動規(guī)。還有就是在實現(xiàn)時為了使 D = 5 D=5 D=5,轉(zhuǎn)移過程會有一定的微調(diào),具體看代碼吧。

#include <stdio.h>

const int M = 12, mod = 998244353;

int n, m, ans, g[2][M][M][M][M];

int main() {
    scanf("%d %d", &n, &m);
    int p = 1, q = 0;
    for (int a = p; a < 10; a += 2)
        for (int b = q; b < 10; b += 2)
            for (int c = p; c < 10; c += 2)
                for (int d = q; d < 10; d += 2) {
                    g[0][a + 2][b][c][d] = g[0][a][b][c][d] + (a + b + c + d <= m);
                }
    for (int i = 5; i <= n; ++i) {
        p ^= 1, q ^= 1;
        for (int a = p; a < 10; a += 2)
            for (int b = q; b < 10; b += 2)
                for (int c = p; c < 10; c += 2)
                    for (int d = q; d < 10; d += 2) {
                        int f = m - a - b - c - d;
                        if (q != (f & 1)) --f;
                        if (f > 8 + p) f = 8 + q;
                        g[i & 1][a + 2][b][c][d] = (g[i & 1][a][b][c][d] + (f < q ? 0 : g[~i & 1][f + 2][a][b][c])) % mod;
                    }
    }
    for (int b = q; b < 10; b += 2)
        for (int c = p; c < 10; c += 2)
            for (int d = q; d < 10; d += 2) {
                int f = m - b - c - d;
                if (f < p) continue;
                if (p != (f & 1)) --f;
                if (f > 8 + p) f = 8 + p;
                ans = (ans + g[n & 1][f + 2][b][c][d]) % mod;
            }
    printf("%d", ans);
}

??輸入200000 50 4000 4000 4000 R y z e n \rm Ryzen Ryzen 剛好在 1 s \rm 1s 1s 跑完,這放在評測機上不開 O \rm\small O O 2 2 2 就超時了。推了半天式子也沒什么結(jié)果,不過有一種實在的優(yōu)化方案是:
??記一個長度為 4 4 4 奇偶交替數(shù) n n n a b c d abcd abcd,它的數(shù)位之和為 s = a + b + c + d s=a+b+c+d s=a+b+c+d,我們記 n n n 的逆 n ′ = ( 9 ? a ) ( 9 ? b ) ( 9 ? c ) ( 9 ? d ) n'=(9-a)(9-b)(9-c)(9-d) n=(9?a)(9?b)(9?c)(9?d) ,則逆的數(shù)位之和為 s ′ = 36 ? s s'=36-s s=36?s,顯然 n n n 的全集的按數(shù)位之和劃分,它的大小以 18 18 18 為中點對稱。如果輸入的 m m m 在對稱點以左,我們按原問題求解,在對稱點及對稱點以右我們求其逆問題,即一個數(shù) S S S,為長度為 n n n 且存在連續(xù) 5 5 5 個數(shù)位之和大于 m m m 的數(shù)的個數(shù),此時答案為 5 n ? S 5^n-S 5n?S,這樣下來狀態(tài)轉(zhuǎn)移的次數(shù)減少一半,可以在時間限制內(nèi)計算出答案。
??不過相應(yīng)的代碼量翻倍,沒這個必要,還是題太臭了。文章來源地址http://www.zghlxwxcb.cn/news/detail-473445.html

到了這里,關(guān)于第十四屆藍(lán)橋杯大賽軟件賽省賽(C/C++ 研究生組)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 第十四屆藍(lán)橋杯大賽軟件賽省賽 Java 大學(xué) B 組題解

    找規(guī)律,可以先手動模擬幾次,會發(fā)現(xiàn)?隨著n越大,零也越多,當(dāng)n為40的時候剛好有9個0 所以到40項以后的末尾9個階乘的和一定是不變的,可以用手算,也可以寫程序 答案是,901327897 代碼: Java中有十進(jìn)制轉(zhuǎn)化為二進(jìn)制,十六進(jìn)制,八進(jìn)制的方法,暴力枚舉一下即可。(因為

    2024年02月02日
    瀏覽(29)
  • 第十四屆藍(lán)橋杯大賽軟件賽省賽(C/C++ 大學(xué)A組)

    第十四屆藍(lán)橋杯大賽軟件賽省賽(C/C++ 大學(xué)A組)

    本題總分: 5 5 5 分 【問題描述】 ??小藍(lán)認(rèn)為如果一個數(shù)含有偶數(shù)個數(shù)位,并且前面一半的數(shù)位之和等于后面一半的數(shù)位之和,則這個數(shù)是他的幸運數(shù)字。例如 2314 2314 2314 是一個幸運數(shù)字,因為它有 4 4 4 個數(shù)位,并且 2 + 3 = 1 + 4 2 + 3 = 1 + 4 2 + 3 = 1 + 4 。現(xiàn)在請你幫他計算從

    2024年02月05日
    瀏覽(22)
  • 第十四屆藍(lán)橋杯大賽軟件賽省賽 C/C++ 大學(xué) B 組

    注意?。。。。。。。。?!這篇題解為賽時的個人做法,不代表是正確的,僅供參考。 更新:思路上應(yīng)該都對,很多題都有細(xì)節(jié)錯誤,代碼不用看了,太久沒敲代碼了(- -) 更新2:代碼除了島嶼的都改好了,整數(shù)刪除常數(shù)有點大,可能會t,賽時的代碼一堆錯誤,還是對自己的文

    2024年02月05日
    瀏覽(25)
  • 第十四屆藍(lán)橋杯大賽軟件賽省賽(C/C++ 大學(xué)C組)

    第十四屆藍(lán)橋杯大賽軟件賽省賽(C/C++ 大學(xué)C組)

    本題總分: 5 5 5 分 【問題描述】 ??求 1 1 1 (含)至 20230408 20230408 20230408 (含)中每個數(shù)的和。 【答案提交】 ??這是一道結(jié)果填空的題,你只需要算出結(jié)果后提交即可。本題的結(jié)果為一個整數(shù),在提交答案時只填寫這個整數(shù),填寫多余的內(nèi)容將無法得分。 2046347140384

    2024年02月04日
    瀏覽(36)
  • 第十四屆藍(lán)橋杯大賽軟件賽省賽(C/C++ 大學(xué)B組)

    目前除 B、F題未補,其余題均已更完,經(jīng)非官方數(shù)據(jù)測試均可AC。歡迎交流 ??小藍(lán)現(xiàn)在有一個長度為 100 的數(shù)組,數(shù)組中的每個元素的值都在 0 到 9 的 范圍之內(nèi)。數(shù)組中的元素從左至右如下所示: 5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2 7 0 5 8 8 5 7 0

    2024年02月02日
    瀏覽(18)
  • 第十四屆藍(lán)橋杯大賽軟件賽省賽-試題 B---01 串的熵 解題思路+完整代碼

    歡迎訪問個人網(wǎng)站來查看此文章:http://www.ghost-him.com/posts/db23c395/ 對于一個長度為 n 的 01 串 S = x 1 x 2 x 3 . . . x n S = x_{1} x_{2} x_{3} ... x_{n} S = x 1 ? x 2 ? x 3 ? ... x n ? ,香農(nóng)信息熵的定義為 H ( S ) = ? ∑ 1 n p ( x i ) l o g 2 ( p ( x i ) ) H(S ) = ? {textstyle sum_{1}^{n}} p(x_{i})log_{2} (p

    2023年04月10日
    瀏覽(32)
  • 第十四屆藍(lán)橋杯大賽軟件賽省賽 C/C++ 大學(xué) A 組 C題

    第十四屆藍(lán)橋杯大賽軟件賽省賽 C/C++ 大學(xué) A 組 C題

    輸入一行包含兩個整數(shù) L, R,用一個空格分隔。 輸出一行包含一個整數(shù)滿足題目給定條件的 x 的數(shù)量。 1 5 4 對于 40% 的評測用例,L R ≤ 5000 ; 對于所有評測用例,1 ≤ L ≤ R ≤ 10^9 。 暴力沒說的,y肯定在l-r之間。同時要想到x=(y+z)(y-z)那么x就只能是y+z的倍數(shù)。 1.使用了

    2023年04月15日
    瀏覽(39)
  • 第十四屆藍(lán)橋杯大賽軟件賽省賽 C/C++ 大學(xué) A 組 D題

    第十四屆藍(lán)橋杯大賽軟件賽省賽 C/C++ 大學(xué) A 組 D題

    輸入一行包含一個長度為 n 的字符串表示 num(僅包含數(shù)字字符 0 ~ 9), 從左至右下標(biāo)依次為 0 ~ n ? 1。 輸出一行包含一個整數(shù)表示答案。 210102 8一共有 8 種不同的方案: 1)所選擇的子串下標(biāo)為 0 ~ 1 ,反轉(zhuǎn)后的 numnew = 120102 210102 ; 2)所選擇的子串下標(biāo)為 0 ~ 2 ,反轉(zhuǎn)

    2023年04月11日
    瀏覽(46)
  • 第十三屆藍(lán)橋杯大賽軟件賽省賽(C++研究生組)

    可以證明,只要首先裁剪最外圍的 4 4 4 條邊,之后無論怎樣裁剪,次數(shù)都是最少。對于 n n n 行 m m m 列的二維碼,至少需要裁剪 n m + 3 nm + 3 nm + 3 次,因此答案為 20 × 22 + 3 = 443 20times 22+3=443 20 × 22 + 3 = 443 。 證明:只需證明裁掉邊界后至少還需裁剪 n m ? 1 nm-1 nm ? 1 次。 n

    2023年04月10日
    瀏覽(25)
  • 第十四屆藍(lán)橋杯大賽軟件組省賽 Python大學(xué)A組 個人暴力題解

    第十四屆藍(lán)橋杯大賽軟件組省賽 Python大學(xué)A組 個人暴力題解

    4.23 update: 省一咯 Powered by: NEFU AB-IN 博主個人的暴力題解,基本很少是正解,求輕噴 題意 思路 模擬即可,本身想用Python自帶的datetime庫,結(jié)果發(fā)現(xiàn)年不能開那么大,就直接手寫了 代碼 題意 思路 DFS爆搜即可 代碼 題意 思路 直接沒思路,一看到數(shù)據(jù)范圍瞬間慫了,腦子里想的

    2023年04月09日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包