QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2558|回复: 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组决赛题解第二题
    $ F) e! N+ R/ _& F# L5 `4 S
    . N) \' v' e- Y1 I求两两不同的素数组成2019的方案数, z' Y0 b# l, n( B9 R
    注意点:并不是两个不同的素数,再者直接搜索应该会TimeLimited,所以用dp或者记忆化搜索,方案数可能很多,记得用long long
    ) Z! }# }2 ?$ q' T7 Q结果: 55965365465060
    - w$ B, `6 j( O* ?7 P代码:
    7 r- D2 n) b4 b# O6 E#include<bits/stdc++.h>
    # X! v9 s5 t8 O& q6 f#define mem(a,b) memset(a,b,sizeof(a))
    0 W! E2 ~7 k4 musing namespace std;
    ( b9 S' z2 D/ n% F/ ~) ttypedef long long ll;
    ; i  n- X. h  G0 M7 b7 Jconst int inf = 0x3f3f3f3f;
    ; f* S/ j( F7 r- Q+ a% A) lconst int maxn = 3e5+55555;
    6 c& o2 Q; J# v; w! _" Zconst ll mod = 998244353;
    0 f( u; X  }* W$ ?0 |2 Lconst double eps = 1e-7;
    & V" G3 @" P. M, e- O# f# v: J1 n5 w) H& e& c
    bool vis[12345];
    6 w5 l3 M1 K; S, J, U! vvector<int>prime;. Y7 |+ j( u/ n/ Q# z# X9 B
    ll f[3000][3000];
    * o8 ]7 F& v3 \: y3 y: M( f' Y7 m
    void init() { //素数筛
    - \4 P9 r" w1 ^6 l3 U    for(int i = 2;i<= 3000;i++) {# B8 z! z  {4 h6 d
            if(!vis) {% T2 A- n/ w( D1 D8 _
                for(int j = i*i;j<= 3000;j+= i) {- n8 {8 q! \% D9 N7 i* p7 g4 F
                    vis[j] = true;
    $ T0 S1 ]& l$ B& x* E8 _  g            }' O4 t+ F$ W/ l; P/ w: [" H
            }
    # Z9 e% Q/ s) A    }
    0 T. A' T, K! X+ b0 J3 B    for(int i = 2;i<= 2019;i++) {1 Z' J2 u+ R. [' A
            if(!vis) prime.push_back(i);4 [0 |. [) v  E" s  _8 z, z, |% x
        }8 Z; d5 p) r0 l
    }( X* _7 r$ k/ I. U5 z% D+ X

    % J/ ]1 B7 N  \# v4 f  rll dfs(int pos,int sum) {
    ! d# [+ S! n* q- A    if(f[pos][sum]!= -1) return f[pos][sum];
    3 ]2 O) c8 v; P& N  D- m1 {8 b    if(sum == 2019) return 1;4 w+ H6 K/ y6 x0 B* A6 O+ l
        if(pos>= prime.size()||sum> 2019) return 0;
    * _7 ?, _% i) ^
    $ W& i6 R4 I( J) T/ l9 v! N    ll ans = 0;8 U2 V0 ^' C5 V
        ans+= dfs(pos+1,sum);// 不要当前这个素数
    % R- B4 F7 y# _- |6 d    ans+= dfs(pos+1,sum+prime[pos]);// 要当前这个素数6 [5 K& K3 ]( h& m5 Y
        return f[pos][sum] = ans;
    ! o/ y9 ]" c4 X. y5 M}
    ! n0 @6 d( f3 I+ L) f) S) P& S( D& `- j7 ?. h* x/ L2 e0 o% R
    int main() {; F$ o' ~1 e! y: ?
        init();
    * X; _6 V6 Z' V6 o8 B% Y$ _0 y6 P* Q& D( @+ }
        mem(f,-1);
    ) i; i& c5 e1 t1 a" F    ll ans = dfs(0,0);2 f$ x6 T8 z- b6 I
        cout<<ans<<endl;
    * f. ?2 y# z* J4 b/ b1 F& W$ W' ~: c4 A- ^; z5 V" v9 g
        return 0;
    ) d6 D9 b2 l3 h- L0 N}9 D8 e. P4 m7 U9 \5 ]
    --------------------- 4 Y# H) v, f- i3 q
    作者:nka_kun
    6 \+ W2 G% J6 }/ V8 x
    ( h' l9 |- M5 |% p$ D! l6 v. _" d. p. @$ b/ q/ g$ r
    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 04:05 , Processed in 0.345578 second(s), 50 queries .

    回顶部