QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2463|回复: 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组决赛题解第二题) l" t- u4 W8 ]! }3 F/ f" B
    3 D: x9 s5 F2 o4 i! T
    求两两不同的素数组成2019的方案数2 u& d6 [3 f) Z
    注意点:并不是两个不同的素数,再者直接搜索应该会TimeLimited,所以用dp或者记忆化搜索,方案数可能很多,记得用long long% X6 N/ @* `% w4 S/ o+ {/ L  s
    结果: 559653654650603 E, R, V, {% z  L3 O. @7 Q( A
    代码:5 d. }' E' [' ]6 i
    #include<bits/stdc++.h>
    % X3 @! B5 U+ E% L: H% j#define mem(a,b) memset(a,b,sizeof(a))
    0 O/ H& K% z2 h5 Z6 U4 v( l+ ]2 Husing namespace std;
    2 \9 J' x6 x2 H* ^1 ytypedef long long ll;3 \- k+ U( i( R0 C
    const int inf = 0x3f3f3f3f;
    9 g% z- v+ c$ b( Q0 v; Xconst int maxn = 3e5+55555;8 i  C% f3 k( F: w
    const ll mod = 998244353;  @* h/ @1 T6 D. z0 L# x
    const double eps = 1e-7;+ f+ I( U& o, C1 S0 j

    : X7 ]" p+ n# U6 J3 ybool vis[12345];
    . y5 [) H- l- t9 }' \, Jvector<int>prime;
    : d2 N* i8 I1 d2 y3 P0 Mll f[3000][3000];
    9 d1 H  S' @( O7 r. G1 X
    # M0 g. N! w( s2 Y2 ~& `  |' h3 \, vvoid init() { //素数筛+ o7 D5 w. F7 \9 e% }
        for(int i = 2;i<= 3000;i++) {
    6 X, u, S2 f0 C        if(!vis) {. _6 o1 Z& Z" I7 l; c/ t  b3 |+ ^
                for(int j = i*i;j<= 3000;j+= i) {* @  R! }& h" x3 U/ [2 O) ?. N# u
                    vis[j] = true;
    : z& r! O4 y1 I$ f' D) L& p. h            }
    7 d2 W( _4 a! `0 W1 e: I        }; h% r/ K) v$ i" s/ ~- Y& ]
        }( ]- Z+ n3 [5 B0 f( `
        for(int i = 2;i<= 2019;i++) {" V- e( Z$ j/ u8 `. r3 a* F
            if(!vis) prime.push_back(i);
    1 H% Y, z  w$ W8 c* f    }! ~$ d. ?6 K2 F
    }
    ! X4 C! `1 k2 U- X0 v8 e  B* o8 g! V6 B
    ll dfs(int pos,int sum) {
    * i* V2 S0 w  S  \6 H    if(f[pos][sum]!= -1) return f[pos][sum];  Z* e7 Y# q& y3 i
        if(sum == 2019) return 1;
    3 e6 M# K' @$ f. h: C    if(pos>= prime.size()||sum> 2019) return 0;
    - Y. k% {8 J6 k2 Y: m* K! g
    : m$ D3 A) L1 y" d! c( x2 B; f    ll ans = 0;
    , h0 N: \3 h. }    ans+= dfs(pos+1,sum);// 不要当前这个素数
    ' G# u+ K: F6 U, l% j. Q( r    ans+= dfs(pos+1,sum+prime[pos]);// 要当前这个素数
    3 K' R$ s$ E! N( v9 w$ r    return f[pos][sum] = ans;6 c! o' X0 J9 G6 C$ A2 s
    }& e9 D  o% [* x
    $ [9 k$ W" C2 }: f- q6 l+ }
    int main() {) G! J7 ~3 l' K8 A$ M
        init();4 W! z, B6 ?4 ]. X0 l" ^/ j! p# {

    * t/ \  N/ N6 H; c4 M! O! z    mem(f,-1);
    % a8 w. j: T" F4 q' d" ^& z    ll ans = dfs(0,0);* g3 z5 I" w4 E6 h* g- l3 X
        cout<<ans<<endl;
    ! F2 ]3 R0 J4 n$ ~6 U
    0 ?# P& A' K  d8 t# @    return 0;
    5 a" g" R1 X2 y9 ^. z}0 N, u; Y& B" T+ B
    ---------------------
    ( G) `6 @) S: J6 Z( L作者:nka_kun " r8 Y8 @2 o2 |5 \3 v
    2 G  v1 R* O/ h9 Z) V$ p6 ^

    # ^; |2 B* [5 v
    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-5-28 07:37 , Processed in 0.530477 second(s), 51 queries .

    回顶部