QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2477|回复: 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组决赛题解第二题
    6 q0 Q* x1 r  F4 [8 a' o( a5 r! D! v, w5 B# z# \' }
    求两两不同的素数组成2019的方案数
    8 o. N* x) T9 O: j0 \注意点:并不是两个不同的素数,再者直接搜索应该会TimeLimited,所以用dp或者记忆化搜索,方案数可能很多,记得用long long0 i" _3 f  @8 O5 G
    结果: 55965365465060' v3 a+ M  f. s1 k+ M. }
    代码:4 h# J. x$ S7 i' ?& O6 q: [0 ^
    #include<bits/stdc++.h>
    # z; o5 P0 h6 |7 O+ y1 r+ ]) U0 q#define mem(a,b) memset(a,b,sizeof(a))8 n3 k2 W6 ]# _# x; T3 `& H
    using namespace std;
    & q; F) b4 B4 X$ J- V" Gtypedef long long ll;
    ( ?9 W! d+ n' }, cconst int inf = 0x3f3f3f3f;. @8 a8 C. `  U. t
    const int maxn = 3e5+55555;
    $ ?, S4 k$ C) A- O' q$ U; g' g0 yconst ll mod = 998244353;  [& X: ?' Q* n$ Y7 w8 d3 u
    const double eps = 1e-7;
    : c. ~, V. K- x# t4 P0 ]7 s& ]# A" \$ v) d4 d5 u
    bool vis[12345];
    $ R: z' ~6 _! e9 ^; F- K) `vector<int>prime;5 }( m4 M* m% @; e, E
    ll f[3000][3000];
    1 M3 N9 G" S/ Y6 S% T5 D. D( g2 l: q0 T4 b- Q
    void init() { //素数筛
    3 ~8 c9 {9 Q+ W  {- A% B7 I0 ~" T    for(int i = 2;i<= 3000;i++) {
    6 }# s( n7 y4 f        if(!vis) {
    ) L$ c- Y8 c7 v3 N) e5 Z* W: w  j            for(int j = i*i;j<= 3000;j+= i) {  _4 f4 r# |6 A0 _& J
                    vis[j] = true;; M2 o( r+ @6 B  d/ B, I- W
                }; X( u$ h* u5 c' r' c- [& T. e
            }
    " f* E  f8 {* a% B    }! u  }  r" ^5 ^7 U
        for(int i = 2;i<= 2019;i++) {1 E" b" T$ W( g5 v' p
            if(!vis) prime.push_back(i);8 g: i0 Y; N7 r. |4 L# E7 J/ S
        }
    - o% o7 g" `1 H4 {6 e/ n}0 k9 _8 \1 Q( h

    * p2 B' C$ _3 G: N7 O7 x: j) ~ll dfs(int pos,int sum) {; A& H3 n& K  Z* _0 h
        if(f[pos][sum]!= -1) return f[pos][sum];0 @( G( }* }3 R4 x$ T4 J% q
        if(sum == 2019) return 1;1 H0 A% t/ C, ?3 ~, }8 K- i
        if(pos>= prime.size()||sum> 2019) return 0;! @1 P$ r% |* T! H$ q8 K
    , o( t" r0 U4 }# c0 z2 R6 N8 V
        ll ans = 0;
    , p- [4 P* @/ T' ~    ans+= dfs(pos+1,sum);// 不要当前这个素数
    5 i0 o& B4 p" P8 C# ]    ans+= dfs(pos+1,sum+prime[pos]);// 要当前这个素数
    ! @4 u4 T: G$ q+ k    return f[pos][sum] = ans;
    . c; j1 ?# t+ M0 z* U  a}: F! E+ r- h; j& I( e$ H

    7 f3 H/ G# R- Q. G- u! N4 v1 p# q8 Nint main() {; Y% W" G( T9 z2 A5 h2 T5 `- C- Z
        init();1 q, q, _6 ?( W

    0 f2 K- Y# f3 E" N$ t( ?    mem(f,-1);& \7 Z& }2 H9 X1 J. M% ~9 k% t( Y
        ll ans = dfs(0,0);
    1 _8 M5 c( f- {    cout<<ans<<endl;$ o& G5 @+ _, Q: I* l8 l

    2 A- q, ^* l% j$ }" {$ q    return 0;: r5 s& J; [1 X$ x8 B: x
    }
    - v- d- I( f/ Q& k3 O---------------------
    1 |- C1 L6 ~7 v' d' T0 \0 t2 U作者:nka_kun + Q0 ?) Y; G# Q
    / z# ?% ]3 D6 `) e/ s" y$ |% P* s
    " _' p* Y: }; z6 l
    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-14 14:58 , Processed in 0.425000 second(s), 52 queries .

    回顶部