QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2556|回复: 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组决赛题解第二题' B8 N+ e* ^* g- l4 t

    / ~# y  k# P" w+ W2 Q求两两不同的素数组成2019的方案数: a* p+ f; Y& H, y' v! G. B
    注意点:并不是两个不同的素数,再者直接搜索应该会TimeLimited,所以用dp或者记忆化搜索,方案数可能很多,记得用long long
    . q/ Z+ V/ }* f8 i结果: 559653654650604 p& h4 H* v1 m8 z7 Z0 Y% |9 m* K0 D
    代码:1 K0 ~1 f. K/ u' ~4 A9 G* q/ Z5 `
    #include<bits/stdc++.h>- H% C1 m6 k7 A/ j" q
    #define mem(a,b) memset(a,b,sizeof(a))
      `/ Q3 J% p+ Ausing namespace std;
    5 K  j# _) R4 U) d9 y. V# O' p: }typedef long long ll;, _. z8 }# u0 c0 j  S3 f$ z
    const int inf = 0x3f3f3f3f;7 s$ a/ b3 Y* m9 {( F) t: U+ h3 f3 W
    const int maxn = 3e5+55555;
    . H- a: z0 \1 f8 y) b( v; econst ll mod = 998244353;
    8 A* N* A1 i( f7 ?+ d6 z- mconst double eps = 1e-7;
    6 H1 a' x4 w4 z3 |7 |7 p; Z; g& ~4 ~! v9 C
    bool vis[12345];
    & v# K6 A9 X5 K* U+ q( k1 }( cvector<int>prime;
    : ~# P! g# e2 Vll f[3000][3000];
    5 m# l  J3 d/ f) B1 h5 `% f% u
    * t! B" Y3 u9 Q8 B  k# j7 m" hvoid init() { //素数筛
    0 }- W3 u# u, m: a9 v: V3 S    for(int i = 2;i<= 3000;i++) {8 G$ h- F% ?$ t0 r9 c3 F
            if(!vis) {1 w# p8 P; l5 f% z0 X/ L0 M2 `
                for(int j = i*i;j<= 3000;j+= i) {
    6 i* _3 o' S' q6 E                vis[j] = true;* e8 F. M- \0 i- F2 r6 K& E
                }
    6 F& y) [* X: Y8 U  S  b6 b        }- s' H# y6 Y+ k3 R4 O+ }# w
        }, }: z$ L7 c" y
        for(int i = 2;i<= 2019;i++) {
    0 f- }3 c: L9 `7 m) y* t        if(!vis) prime.push_back(i);0 r9 z7 e! i% n* H. }8 \
        }" a! E+ {& k! q2 B( _. c7 o
    }6 R& l+ a! ?$ N# M

    + H+ e3 v/ d; ]6 ?4 wll dfs(int pos,int sum) {
    " X% v; c, c/ E. m8 ?" L5 P3 }    if(f[pos][sum]!= -1) return f[pos][sum];+ g' w3 F" C. P9 v" \+ G
        if(sum == 2019) return 1;0 M4 z4 r9 C( [5 x2 x6 V
        if(pos>= prime.size()||sum> 2019) return 0;; ?$ M( T6 y7 v) r  t
    4 z( O$ f& h5 u' G: ?2 ~
        ll ans = 0;; s" ~( B3 f6 g
        ans+= dfs(pos+1,sum);// 不要当前这个素数
    0 h2 Z0 }6 y8 ]/ x/ ?5 [) k' j    ans+= dfs(pos+1,sum+prime[pos]);// 要当前这个素数- X4 P0 D7 O2 Q; W( r* b
        return f[pos][sum] = ans;
    8 Z1 F7 v, H% p+ @}4 c6 S2 D/ I: ]) u- y. P

    6 M, b9 I% W, E  Mint main() {
    & \% W# d+ t9 Z3 P& G6 ~    init();
    % Q, ^& [. i* G% Q+ @' `
    $ Q$ j0 D) h* q% \4 a$ x+ V4 ~+ }    mem(f,-1);
    2 p4 ^4 s+ K  p! ~4 T6 n6 z    ll ans = dfs(0,0);# N, x; _; o! n! v! }
        cout<<ans<<endl;
    1 [3 r* V8 t  s( f8 R+ j& T2 j$ U2 [7 i! L  y: b
        return 0;
    ' i5 f4 H7 B! {6 w' }}
    " ^, q6 D3 U3 D: Q$ w2 C; v: x* Q8 o---------------------
    : E$ g1 t* C! N8 J$ B! d作者:nka_kun
    % A5 k+ Z! V' A3 p" ]* V; S; N+ O, n. w- {9 z8 {

    3 \, x- d  Y: @  j1 g4 R7 y, 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-9-28 03:32 , Processed in 0.293858 second(s), 51 queries .

    回顶部