QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2464|回复: 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组决赛题解第二题
    2 ]! Y) V+ T, B# U, ~0 S9 Q& @4 C+ N% z7 _
    求两两不同的素数组成2019的方案数
    - p6 x% ^% y0 J9 W5 H( {注意点:并不是两个不同的素数,再者直接搜索应该会TimeLimited,所以用dp或者记忆化搜索,方案数可能很多,记得用long long
    $ w: X& \4 n9 c/ x+ J结果: 55965365465060* Z8 z7 A! k1 c. b7 j
    代码:
    2 m1 q2 h! H+ n3 [8 H- g: F#include<bits/stdc++.h>) g0 s( d" B% c
    #define mem(a,b) memset(a,b,sizeof(a))$ V5 x2 W/ F, J7 H6 a
    using namespace std;
    # O; ~/ w7 P3 O  btypedef long long ll;" f, }/ l; a1 M, F2 q& v
    const int inf = 0x3f3f3f3f;
    + M% V) y9 Y/ B$ p( O+ ]const int maxn = 3e5+55555;9 F* ^# s% u' ]& v$ F
    const ll mod = 998244353;
    ; u: }+ n( J; b* H# Q7 Vconst double eps = 1e-7;' j& d7 L) e4 @3 q( e8 q
    6 A* M% C6 m4 p! U6 X
    bool vis[12345];( f7 Z0 m$ l! x7 H+ V$ C! z6 _- Y3 x
    vector<int>prime;! g& i3 z# p; y. M  `2 D/ H
    ll f[3000][3000];
    / W; H1 r9 D. k( i  ~( ~7 W$ o( H  @* N
    void init() { //素数筛" s. q3 K4 t5 m
        for(int i = 2;i<= 3000;i++) {0 N- s1 I* B! T! u7 z2 h6 O0 u
            if(!vis) {
    ) O# q  j% U' |            for(int j = i*i;j<= 3000;j+= i) {
    9 t. y" Q  c4 Y                vis[j] = true;
    + _9 t7 u0 _! h1 a2 N            }
    2 u4 \4 R! J, B: P! Y        }; S6 |- z7 x( U9 t/ V  @
        }6 `3 {9 X' v8 y7 C# t* f
        for(int i = 2;i<= 2019;i++) {6 T8 E) {9 ~4 T: i; W. ~, j( F, i
            if(!vis) prime.push_back(i);
    ( f7 R8 C& D/ P* d# |    }4 w7 r2 ]3 G7 \5 e2 m) F4 x
    }; f4 |6 E! m" {) c. {

    9 l4 N# m  x/ [7 u) N0 F& Bll dfs(int pos,int sum) {$ C8 D' u3 z; n, s& ?
        if(f[pos][sum]!= -1) return f[pos][sum];% f: Y8 b2 x( G! c. V( F. m
        if(sum == 2019) return 1;& b  H5 ]( L, G: E
        if(pos>= prime.size()||sum> 2019) return 0;
      T. @3 C7 f1 {' ?, k3 E0 E3 |, ?
    3 K, K; x8 q/ {& `9 B  R    ll ans = 0;
    - ]" z  ^+ D- a- c    ans+= dfs(pos+1,sum);// 不要当前这个素数
    . X- j" y& q* i9 W" d2 {5 t    ans+= dfs(pos+1,sum+prime[pos]);// 要当前这个素数- N/ G9 Y/ I2 h9 q/ W
        return f[pos][sum] = ans;* z2 H  G' U/ l. q
    }
    * a% ^2 B! T1 A+ p. s  h8 o0 V3 |$ l! a: o$ Y6 ~: I& I
    int main() {  ~1 U3 u3 ~4 I1 x  B
        init();, x" d( Y- y7 k* d6 i* E5 Q1 G

    * q" U3 f* g5 ^; H. K5 ~% g8 K    mem(f,-1);
    : m$ G3 O( K" z& s4 y    ll ans = dfs(0,0);$ b5 U3 E# ^; E: B/ a
        cout<<ans<<endl;" q7 ]9 F3 q' t5 w

    6 L( B% v* T; j8 H    return 0;
    - O& e6 Z+ ~1 h: @}
    $ g: `6 E! x! x+ J! X---------------------
    + f/ X3 ^& F& J/ D作者:nka_kun
    1 d4 V; \0 D* A- E
    2 p. {! E2 [4 Z
    ( B: I2 [* `: r: L5 i+ @
    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-5-28 13:27 , Processed in 0.435097 second(s), 51 queries .

    回顶部