QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2555|回复: 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组决赛题解第二题# c; \, B. h( }( t) q
    * r6 w; z" z: Y
    求两两不同的素数组成2019的方案数
    5 S0 t6 ^2 X7 L( c/ j7 n: G* J' D注意点:并不是两个不同的素数,再者直接搜索应该会TimeLimited,所以用dp或者记忆化搜索,方案数可能很多,记得用long long
    % \' z8 Q. C& ]结果: 559653654650606 E1 S0 @& p. f+ w( a/ k4 h
    代码:0 p: S6 m, E6 J6 w4 {
    #include<bits/stdc++.h>1 u9 y9 y% ?9 u. B6 t
    #define mem(a,b) memset(a,b,sizeof(a))/ t3 @  g- j6 M' m# c) p
    using namespace std;8 f5 g5 ~" G0 n( \
    typedef long long ll;
    ) L. V4 O$ P3 _0 i( v1 @  uconst int inf = 0x3f3f3f3f;
    ' \; a- e: \0 U  N; oconst int maxn = 3e5+55555;
    " M+ E7 d; N7 k# v+ K1 e/ Vconst ll mod = 998244353;3 k( r3 r, G1 v! d
    const double eps = 1e-7;
    ) d' s  X5 M2 b
    0 J5 ]$ Z$ ?0 f7 s( C' `bool vis[12345];
    + v# y7 V6 l/ f) `9 N2 bvector<int>prime;
    4 z9 e. h+ Y! e( W, Oll f[3000][3000];
    " k6 f1 W) M, ~- g$ J2 o" T! ]0 y! ^) V" n
    void init() { //素数筛
      Q! G! k1 _, k2 n) F    for(int i = 2;i<= 3000;i++) {
    9 H5 G0 x6 V* R" q        if(!vis) {
    1 n+ _$ D5 k) t6 I4 X, j            for(int j = i*i;j<= 3000;j+= i) {1 A. |1 j+ i# |& C
                    vis[j] = true;5 J9 z$ J; e* `3 {0 e9 v4 k
                }1 x* E% j% H3 g4 ]( i
            }
    " `5 Z  ]- D* ~  L    }
    : A/ j  N0 c- p' f+ ]# _4 Q    for(int i = 2;i<= 2019;i++) {
    3 U6 a& u) t( E- B        if(!vis) prime.push_back(i);* R0 |$ c$ K' F0 ]- y
        }! N! H% s) ~; A5 M
    }
    # Q' w0 N7 \/ I
    0 a2 b1 E7 \. r7 A- P- qll dfs(int pos,int sum) {
    $ C) o% G5 H  z% e- s4 S8 T+ f    if(f[pos][sum]!= -1) return f[pos][sum];
    * x$ _6 Z& i+ T    if(sum == 2019) return 1;: V/ `4 H% Y  |9 h
        if(pos>= prime.size()||sum> 2019) return 0;
    0 d% p7 n; l& o. v) D; h; E" V- d/ a- t6 o# ?+ |! o
        ll ans = 0;$ s3 B, G3 m( d4 E
        ans+= dfs(pos+1,sum);// 不要当前这个素数
    # r1 f* L! x6 J; u4 w% [$ N    ans+= dfs(pos+1,sum+prime[pos]);// 要当前这个素数* q5 t9 _2 X! Z5 a3 N1 \
        return f[pos][sum] = ans;2 \8 F& I2 |) f
    }: L4 {0 [& m: Q  z

    2 _+ Y8 O( V3 O/ D" r  hint main() {
    + u: ^7 v0 z; h+ A) s, _    init();) l2 v7 `* \) r

    0 K- d3 y  N+ ~/ d. b6 f    mem(f,-1);0 b/ `0 w8 y2 G8 U4 t
        ll ans = dfs(0,0);2 C5 n" z6 Y, `7 \
        cout<<ans<<endl;
    9 K5 ~, Q  `/ j$ Y0 t% H* [9 t2 A( }! b5 C# D
        return 0;
    " z4 N9 V; d) G7 d/ K}9 ]1 C) g0 K8 \; @/ v6 z
    --------------------- 7 e7 \% P) k1 T6 C
    作者:nka_kun ! E4 |4 M. E! R7 p2 P! U) P) `/ Z9 }
    + t4 W0 `3 ~) C' i1 i) B
    2 g+ w; U/ A5 V; |' P4 O1 b
    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-9-28 02:35 , Processed in 1.648265 second(s), 51 queries .

    回顶部