QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2554|回复: 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组决赛题解第二题: _$ ~& g, P" z, I. \, a+ j6 V; ]

    6 ^1 w+ [: |% e0 I* |求两两不同的素数组成2019的方案数
    # a$ E3 f" c+ G% Z; X1 ]9 r5 X注意点:并不是两个不同的素数,再者直接搜索应该会TimeLimited,所以用dp或者记忆化搜索,方案数可能很多,记得用long long/ O+ g* G9 I' A* w$ ], g
    结果: 55965365465060
    + |( ]6 o) [( c) T; |/ G" [1 C代码:
    + u, D5 ~# j9 m2 U, K; R2 K#include<bits/stdc++.h>9 I: z4 f* x6 k$ S( V# t, q
    #define mem(a,b) memset(a,b,sizeof(a))
    - w  b% a1 x1 R' xusing namespace std;
    % N7 G1 k, c- b$ {: \1 @typedef long long ll;
    / g2 C$ U  v* p0 l; E* }  N$ C( Pconst int inf = 0x3f3f3f3f;
    % b1 x- R1 f3 I% lconst int maxn = 3e5+55555;! z" _$ x6 S5 q. K' @2 z
    const ll mod = 998244353;5 R* |6 I7 {+ G+ r
    const double eps = 1e-7;
    ! Y% \: P; I! |/ v/ Y. N
    / _; d0 j/ z+ u( E5 {& Qbool vis[12345];7 {' e& g9 _: J6 v+ {! p
    vector<int>prime;1 w8 b# O. S8 Q' i
    ll f[3000][3000];
    6 ~" U9 C: D) J8 T8 }7 f8 E- j, H( ^1 v
    void init() { //素数筛
    3 V8 Q% o1 K! H' x( W6 F    for(int i = 2;i<= 3000;i++) {
    - m# k8 g' z0 X6 B2 R& \. f        if(!vis) {
    5 K7 I& C7 C4 E0 S            for(int j = i*i;j<= 3000;j+= i) {
    8 q! W) @" \1 f' S8 B' F                vis[j] = true;
    + ^( O6 a$ O4 @& c            }  `5 A( I: l' r/ ]4 n0 L+ b
            }! K1 \1 M9 V" `4 |  c$ y6 F$ H
        }
      U3 o+ w6 Q7 g3 \    for(int i = 2;i<= 2019;i++) {
    6 y. O) F& S5 Q" e% J; j6 W$ m8 T        if(!vis) prime.push_back(i);
    ; F+ a; O9 i- Z( M$ h8 y    }
    . S) A/ B6 u) ~( I! m" r$ Z; X}
    - d0 e( m. O' f: ?
    ) `' p% ]/ n5 X1 pll dfs(int pos,int sum) {' T" n5 Y6 ~) G. P9 g
        if(f[pos][sum]!= -1) return f[pos][sum];
    + P1 ~/ E; Y+ {- v    if(sum == 2019) return 1;
    - b9 o8 s. S+ f/ k- S    if(pos>= prime.size()||sum> 2019) return 0;! P, o( m. W7 s& M8 P9 A

    - O' L% O* K* F  ^: @6 [    ll ans = 0;* @, `  a( \4 s4 B/ P
        ans+= dfs(pos+1,sum);// 不要当前这个素数6 h- p/ ^, M# n" K* Y! R: B# R" O
        ans+= dfs(pos+1,sum+prime[pos]);// 要当前这个素数4 C' Y& r9 I  b9 `
        return f[pos][sum] = ans;0 o5 Y* A- ?8 ^- q8 S2 r
    }& `' m- r4 c2 I  Z: [+ y, t- c
    5 B; z* d+ @7 W  B
    int main() {
    2 \4 l- S/ Y- N% m7 x. R2 S4 F0 y    init();6 G6 N/ G0 X  A$ T9 m- @) I: I1 r" f
    ( Z  ]  @9 K- [! y# X
        mem(f,-1);
      u9 B+ K9 G0 O) h) C: E    ll ans = dfs(0,0);% ~9 @: ?% k: q. Y
        cout<<ans<<endl;
    & D& }" @  u# B/ b% F. f' X  [) V$ J9 L4 _' J" N4 v
        return 0;
    ; \) t/ ?* j4 ?/ _0 a/ |" H# e}$ O) d& T3 e0 l1 B! B
    ---------------------   I# a3 B: \& w% d. ?, V/ J' X
    作者:nka_kun * c! H# M3 u" o6 h0 x$ `0 ?
    8 K0 R# g" u; @8 f& B/ W  i/ w

    ) P$ j9 X7 m8 K1 v- T- _. M  t
    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:10 , Processed in 2.115003 second(s), 50 queries .

    回顶部