QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2516|回复: 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组决赛题解第二题
    8 o( B8 t8 L9 u7 X. C/ r+ G8 k5 W# x
    求两两不同的素数组成2019的方案数
    7 @' X1 A5 g3 p" d3 N7 C注意点:并不是两个不同的素数,再者直接搜索应该会TimeLimited,所以用dp或者记忆化搜索,方案数可能很多,记得用long long, M2 s; }9 T& J+ ^% y
    结果: 55965365465060% k6 e; Q/ H0 D9 x% Q3 p3 _
    代码:
    : \6 b- W0 V" m& \#include<bits/stdc++.h>
    4 q" y$ y% l" c#define mem(a,b) memset(a,b,sizeof(a)). M3 B* E8 I3 L+ |4 d
    using namespace std;
    0 k" S' y& [$ l' e6 Q/ itypedef long long ll;" O1 R  E* m4 [; h$ @: z
    const int inf = 0x3f3f3f3f;
    0 r( J$ C( F) J$ G/ e1 Q2 e4 lconst int maxn = 3e5+55555;; R/ ?, Z3 J# f. i  E+ J4 D
    const ll mod = 998244353;
    - n& l$ M4 D& d6 ^+ z6 `const double eps = 1e-7;+ u& I7 Y9 s( {  i& O0 ~% x

    4 Y) Q! S7 t! O5 N0 h0 |bool vis[12345];9 @6 V5 j5 L! i( G  s& k. T2 l: x
    vector<int>prime;
    ' C/ j; c" d) p4 y7 Z$ z1 Ell f[3000][3000];" v8 d+ M0 d6 ~5 G/ o( P( Q
    % ^- G8 `" z+ @, q
    void init() { //素数筛
    8 ^' o2 O9 z, m+ g' ]    for(int i = 2;i<= 3000;i++) {. ^" H! O% S$ u% h/ ^& ?
            if(!vis) {6 ]' S9 Q/ _: d7 _
                for(int j = i*i;j<= 3000;j+= i) {# v# i4 X- Z: j
                    vis[j] = true;
    5 N- h! N( ~6 Q; c  F6 q+ A            }9 y  |9 H2 e" f( v
            }
    0 x: N* s6 x3 x! g/ M    }7 P! O/ t* q! p( w; l% F
        for(int i = 2;i<= 2019;i++) {, T9 O8 w( a- D  M& s
            if(!vis) prime.push_back(i);
    * `9 ^4 q, H6 l5 V% h6 [    }
    ' D+ ^! G$ d- X6 [( J$ V3 g7 P* w5 m}
    . ~  A, I$ h* u" U- p
    1 m, D& s0 \2 k  y& x2 v* R! |ll dfs(int pos,int sum) {
    7 |1 f& g6 ]1 @    if(f[pos][sum]!= -1) return f[pos][sum];( l6 {8 A4 c0 t) \3 h, z. T9 ^! f! u. t) S
        if(sum == 2019) return 1;$ [% n7 M2 r# n& p8 ?& Z) Z
        if(pos>= prime.size()||sum> 2019) return 0;
    8 ?7 L! G; o6 g. ?" b) ?. ^/ U' V) o; ^
        ll ans = 0;, Y; @6 ?) t, I( H7 i4 c; Q) l+ e
        ans+= dfs(pos+1,sum);// 不要当前这个素数: n5 x. ]+ k4 n  _- N& V
        ans+= dfs(pos+1,sum+prime[pos]);// 要当前这个素数5 s) K+ r/ y8 k3 B+ z- i
        return f[pos][sum] = ans;
    ) b& ^2 f$ H- z, ]}& O6 O" H* {) i; B2 Q1 A9 x9 s

    ; W+ d/ j1 o& t) ]5 g3 C6 i9 [int main() {, _* X4 A2 o2 L( J( `  f1 H
        init();
    6 y7 W9 q2 S  d/ R
    ' r; Y% V1 L! O$ S4 H    mem(f,-1);; e1 f, l7 c3 E  e
        ll ans = dfs(0,0);# C: c1 K" z) G5 C
        cout<<ans<<endl;$ X- n  {4 L- s8 z: }# V' ?

    % Y2 D( i0 B7 f- F. ~    return 0;
      G6 ?0 Z$ H% U: `. h3 _1 S& `}3 k, w) f* `7 _9 I
    --------------------- + u' h* F8 t0 f" T
    作者:nka_kun
    5 d5 B0 p9 M. r" n; G
    1 {2 y( M* M, D8 H* i  Y3 v3 B4 ^" G+ G. s% X
    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-8-1 04:40 , Processed in 0.280278 second(s), 51 queries .

    回顶部