QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2480|回复: 0
打印 上一主题 下一主题

2019第十届蓝桥杯B组决赛题解第二题

[复制链接]
字体大小: 正常 放大
杨利霞        

5273

主题

82

听众

17万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2019-6-28 15:49 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    2019第十届蓝桥杯B组决赛题解第二题3 [- n+ |, C$ k
    0 n3 @; Z3 M: e5 e+ S6 Y6 M
    求两两不同的素数组成2019的方案数
    2 g" e! _/ ^- ?( U) f注意点:并不是两个不同的素数,再者直接搜索应该会TimeLimited,所以用dp或者记忆化搜索,方案数可能很多,记得用long long
    9 T" ?9 f7 R5 {  C. D结果: 559653654650601 s' Z1 _' A9 |. g5 G) U( b4 Y! d
    代码:/ M6 o# Y, e' V3 n6 e8 \
    #include<bits/stdc++.h>2 M1 A! ^3 y: O7 l6 T
    #define mem(a,b) memset(a,b,sizeof(a))
    ( F) D4 Z$ L. L/ w6 L+ }using namespace std;& J5 @; r/ ]; J
    typedef long long ll;0 b9 E, d1 P( h- k8 U2 I% _
    const int inf = 0x3f3f3f3f;
    2 O5 z' E4 v9 \+ N/ z6 _const int maxn = 3e5+55555;
    6 m6 a+ _/ B/ I6 econst ll mod = 998244353;! K- O* i0 B2 b4 i" N
    const double eps = 1e-7;
    ( j( M6 I( o$ B7 W
      v# z# k0 Q, A# F" o. qbool vis[12345];6 A" ?9 g3 r3 X. c* ]5 G
    vector<int>prime;
    ! d' e+ R, d; P2 w0 B8 |& T' {' Y7 Vll f[3000][3000];
    6 x" r3 `* d6 y+ R/ r1 ~
    3 c. `# H: Q# A/ \9 rvoid init() { //素数筛( d/ \. H2 ?7 j7 N
        for(int i = 2;i<= 3000;i++) {
    + [: A' e- E% ?- A  `1 h        if(!vis) {
    * w& Y" M; _$ `3 |1 r& b# H            for(int j = i*i;j<= 3000;j+= i) {
    8 c' q/ _2 F  u3 S  K2 s! z) R0 K                vis[j] = true;4 ]* z  G+ M" o) a9 ~! F
                }' t  }3 M" b, I& H- i% T6 G1 g
            }" h- [! B" ?+ S2 h- B
        }" W9 J9 Z+ g; W1 O+ d. m0 U
        for(int i = 2;i<= 2019;i++) {
    3 z. X! M7 i/ ^! S) p; l8 X        if(!vis) prime.push_back(i);
    : g" O8 ~! ]4 v: |    }
    - O; p  @; D8 A) f3 g}
      a7 B: y% t8 Z/ L' @
    $ }1 t$ P4 M4 Tll dfs(int pos,int sum) {6 D0 E9 G0 Y8 Q; Y
        if(f[pos][sum]!= -1) return f[pos][sum];7 q1 m. o" `6 d  s% Z2 @' u
        if(sum == 2019) return 1;
    % v. Y. F9 P$ h& ~) \0 d    if(pos>= prime.size()||sum> 2019) return 0;* U. P+ P+ v, g) \: f3 Z
    ( p" n# |% O; J7 w6 E
        ll ans = 0;6 p, E, G( Y* Y6 C2 f* R1 R1 O
        ans+= dfs(pos+1,sum);// 不要当前这个素数& D' k$ C8 M* A! q6 U( n
        ans+= dfs(pos+1,sum+prime[pos]);// 要当前这个素数+ q/ `: P6 O, k1 M" a; q* A
        return f[pos][sum] = ans;9 \0 [' P6 |, p9 \1 m5 p3 v% M
    }
    $ G! X0 L$ Z% J8 C. M2 k' h/ \- |1 L' Y) g1 |
    int main() {9 M/ z4 ~8 y0 w
        init();( E+ o9 z2 L4 I# G4 v
    - s- W+ _2 c! I. ?/ A. r6 }, I
        mem(f,-1);
    * k9 i0 w0 z  W( a    ll ans = dfs(0,0);+ i/ h; Y+ B1 C' T7 d- }* U
        cout<<ans<<endl;
    5 n/ |  D' b* G- g* R$ b# a# n0 g3 M  A/ ^
        return 0;
    % p4 y. ]9 e, p}
    / ^  G" j8 M  y6 u! }* v4 o--------------------- % C) Z, @" h$ z$ E$ F* U
    作者:nka_kun % X- O6 T8 a6 K

    & N- u; N% H5 o* b! \9 q
    - ^7 i8 S$ V1 {% Z# c9 T  J
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-6-16 03:52 , Processed in 0.365396 second(s), 50 queries .

    回顶部