QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2520|回复: 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组决赛题解第二题+ `' e4 i( W1 _# ?; C

    ( @4 C3 o! V; u7 f求两两不同的素数组成2019的方案数
    2 E. A3 Y6 U2 a8 _1 B* v注意点:并不是两个不同的素数,再者直接搜索应该会TimeLimited,所以用dp或者记忆化搜索,方案数可能很多,记得用long long8 }0 _+ e7 n. h6 \6 `
    结果: 559653654650604 l) `6 p% A, C% N
    代码:" H8 `% E* c6 {: N
    #include<bits/stdc++.h>% |8 I' r) Q8 p. m
    #define mem(a,b) memset(a,b,sizeof(a))8 S* B8 T0 |1 W9 v) K2 G) k
    using namespace std;7 W# u' d' ?6 T+ o( l, X7 _
    typedef long long ll;
    8 I: C6 e5 m+ X: F7 A" [9 Oconst int inf = 0x3f3f3f3f;
    ! w3 t8 H( u( _0 @. Y' x, i# o' S8 ^const int maxn = 3e5+55555;
    * E7 D; |0 R- ~const ll mod = 998244353;! A. o( j7 G5 S* e# O7 I  d& r: b) ^, H5 j
    const double eps = 1e-7;6 i+ N% X+ ~- A( A9 x2 L8 P' _

    2 u& ?$ G, Z+ d  ]2 x* xbool vis[12345];* @% [; V1 q2 y# Z. v9 n
    vector<int>prime;
    9 [* a; s+ v4 C. Sll f[3000][3000];
    2 a* ]$ V, q, C# S: V5 M, R
    ! D# i2 ^' ?" G/ f" d, Rvoid init() { //素数筛
    4 D" [. n* c1 f; _1 l* l    for(int i = 2;i<= 3000;i++) {3 W6 w# j: c1 j  a" R7 X
            if(!vis) {
    ( N) ]0 ]8 n! G3 t            for(int j = i*i;j<= 3000;j+= i) {, ?0 X. }, K( q2 A, H7 V8 s
                    vis[j] = true;* ?5 P4 ]% q* m8 B
                }
    - w7 C* [5 j5 {1 n        }! w" }: r* b" \
        }
    2 Q. N! J. `: }0 [. z* |6 Q    for(int i = 2;i<= 2019;i++) {3 m; f4 K( }5 L3 g
            if(!vis) prime.push_back(i);4 U" n0 F( M+ x+ W+ g: D
        }0 A! Z& J+ ?2 D9 r4 Z% t4 i
    }
    & ]6 c2 u8 }, ^* C" E
    % W7 _* n5 c: L- ^' Wll dfs(int pos,int sum) {
    ( Q6 Y+ G; t6 V    if(f[pos][sum]!= -1) return f[pos][sum];( e% A; E* ]6 }0 @
        if(sum == 2019) return 1;- W/ S4 a& ?: C8 b; b4 P- {9 T5 b0 c
        if(pos>= prime.size()||sum> 2019) return 0;9 M. A- ~9 ^: G& m* }! {) i
    : N% ]; W. L3 P1 ~
        ll ans = 0;
      b" J! L/ L# g& b7 j    ans+= dfs(pos+1,sum);// 不要当前这个素数
      Y" ~6 K+ J  ^/ X3 |    ans+= dfs(pos+1,sum+prime[pos]);// 要当前这个素数
    * r8 }, A% R* i+ g9 I    return f[pos][sum] = ans;
    ( A1 P6 c8 ~9 r5 e! W# d}; u# S# S: M9 Z2 K: T& x

    8 d( U% t* v% J6 K( ~/ Z0 lint main() {, _, N3 a( E7 x$ h0 y! R
        init();
    ( ?  C  X1 c. G( w9 L4 j5 o/ S# [4 l
        mem(f,-1);
    6 @9 d0 k8 E5 Q! X* N  x    ll ans = dfs(0,0);/ U1 J" B8 S$ w. t; n% ^' G# e: n1 {
        cout<<ans<<endl;7 I1 P3 `4 B% N) l! I& V

    , f1 B& d$ v8 L1 C3 W4 @    return 0;$ V: l1 A, O, P' M! h
    }  g! x4 @, v& u/ `! X4 o
    --------------------- 8 r% a$ }$ k5 V7 T/ B3 a
    作者:nka_kun 3 V5 o" d* I" E3 ?7 |( h- J
    / N- x( m& K* {  J7 V, s3 S& F

    / F' D) O+ G9 B/ t) }5 e
    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-4 10:43 , Processed in 0.298993 second(s), 51 queries .

    回顶部