QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2511|回复: 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组决赛题解第二题
    * y8 O1 @3 x; f4 b* L3 A
    9 N. g' N( g' O1 |求两两不同的素数组成2019的方案数
    * D* U# B& _4 c) N5 h% ~注意点:并不是两个不同的素数,再者直接搜索应该会TimeLimited,所以用dp或者记忆化搜索,方案数可能很多,记得用long long9 m: Z6 e& V$ v; l8 }
    结果: 55965365465060
    $ u+ ]) Y: q* J5 h代码:
    & j* u; h! a9 z3 b#include<bits/stdc++.h>
    : p  \5 }5 \& ]#define mem(a,b) memset(a,b,sizeof(a))- _0 o* T2 @9 O0 m2 Y
    using namespace std;
    6 G8 R6 B" X* p: ]2 Etypedef long long ll;, w; @! D& ?6 _8 G1 d0 H+ c/ m! ]' w
    const int inf = 0x3f3f3f3f;
    2 d$ l, ~% i+ G" c: U2 T) J1 Pconst int maxn = 3e5+55555;- t/ W' q$ A% t; f& G4 |
    const ll mod = 998244353;5 v, [% r# ~5 ~; N, q
    const double eps = 1e-7;( T2 k6 ]4 W" p2 R( ~1 ~

    , b9 W) M  ]+ H2 L9 m' T: f( o. hbool vis[12345];- h, J5 |0 M6 v
    vector<int>prime;& l6 h5 k; _6 G# W- `1 M% {$ o& x6 N
    ll f[3000][3000];: }* `; b% ?! ^8 t
      f9 N' d" x. R. g  k
    void init() { //素数筛
    6 q4 l" i9 x1 K6 g( b7 Y    for(int i = 2;i<= 3000;i++) {
    , H0 p$ N* n; F  h0 m+ s5 j        if(!vis) {) W4 N: ]7 @; z' x3 \7 u" l7 W* j
                for(int j = i*i;j<= 3000;j+= i) {
    / L* G4 }. b6 L                vis[j] = true;
    7 E  e9 H1 F$ X, c            }: U6 P) R4 p# X7 H1 L$ p
            }
    ! ^5 W- N: L' o  l# }1 p    }! S4 I/ t# a3 e8 L& X: [+ H
        for(int i = 2;i<= 2019;i++) {; E1 l* @/ z2 J! W3 u9 o
            if(!vis) prime.push_back(i);
    7 Q  \/ Z# P1 g  p3 B    }  B0 B5 h5 h2 C: z
    }
    6 h! |2 j$ l9 v9 y1 B( f+ u, `7 ^: c) d
    ll dfs(int pos,int sum) {
    " L6 J. l# N$ w* I  B    if(f[pos][sum]!= -1) return f[pos][sum];
      m+ {3 N; a2 h    if(sum == 2019) return 1;  h& d" Q5 k7 A  |" E0 |. N
        if(pos>= prime.size()||sum> 2019) return 0;
    ) z: k; U* G! ?" ]' X
    : b( `+ t; T/ b: I! g$ v( I% T- W2 O" S    ll ans = 0;
    ; \1 e0 i3 F; L+ |& H  t7 Y! {, G" Y" y    ans+= dfs(pos+1,sum);// 不要当前这个素数5 W# z  S7 a. w: D
        ans+= dfs(pos+1,sum+prime[pos]);// 要当前这个素数" \# w  ]. B, X( r$ ?
        return f[pos][sum] = ans;: m3 {$ C7 t  z* l
    }+ o8 s6 S2 [/ W& r" g

    4 G4 ~$ ^! m6 r1 a6 oint main() {  |* ~9 B6 e6 L: l
        init();
    ' M; x: e' f' m1 J6 a8 q) S( C  G& }( P
        mem(f,-1);
    ( o* b! T( I2 G# d6 O6 V- y+ V    ll ans = dfs(0,0);' K& I/ P' X+ {3 ?, g; ^8 E0 d
        cout<<ans<<endl;
    8 z, m' p  S; w/ p8 [
    $ H* Z! ^, p4 N4 V    return 0;
    * f) M% w! c* \' d+ X0 z}( Z" |. u/ ~+ v" D) g8 Q& N+ v7 d
    --------------------- : Z: W% l: ^% u' d
    作者:nka_kun 0 O) m$ _7 f  `1 |8 m9 M& x5 K* M
      ^3 W. L3 L. f8 `
    . _7 Q, w( A5 l! P; k9 Q  Y1 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-7-30 11:31 , Processed in 1.703177 second(s), 50 queries .

    回顶部