QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2447|回复: 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组决赛题解第二题
    : H  \0 n6 l. x. [) Q9 ~
    / X. p) _- G- t$ [, L求两两不同的素数组成2019的方案数
    ; e$ u: {% h1 ~注意点:并不是两个不同的素数,再者直接搜索应该会TimeLimited,所以用dp或者记忆化搜索,方案数可能很多,记得用long long
    3 m6 T% q5 M8 i% P结果: 55965365465060
    - g/ |& Y( v, v9 T# I+ O- G8 N代码:
    6 r3 u3 p8 y: G& y  A#include<bits/stdc++.h>, H( c9 _, o( j% g
    #define mem(a,b) memset(a,b,sizeof(a))2 u. ]! E3 x' S$ A$ o. ^7 H
    using namespace std;# Q) d% o% W7 g# g& Q! U
    typedef long long ll;
    : r4 j  r7 m1 z' P0 |  Rconst int inf = 0x3f3f3f3f;
    2 ]) D9 ]3 A5 G" Pconst int maxn = 3e5+55555;
    * Y) a9 L( Z4 r! J' N7 Cconst ll mod = 998244353;
    ; |: `7 h: A& \6 F( nconst double eps = 1e-7;# Z4 P7 C7 P1 z8 P/ I" x
    3 j0 l& B. Z1 @6 o3 \, f
    bool vis[12345];7 C: j1 T& b; ]0 v3 r. h
    vector<int>prime;/ L- o- M& A# @% N
    ll f[3000][3000];  j0 @) D3 K3 h) c
    6 u# c3 {! l. M/ c/ u& W% B
    void init() { //素数筛% a  V& a* j- P8 h9 }  s0 b: B
        for(int i = 2;i<= 3000;i++) {6 T5 ]1 \- V: V8 X2 l, b
            if(!vis) {
      ~' g. E# }6 s/ C; E  H4 f+ E            for(int j = i*i;j<= 3000;j+= i) {
    7 M5 W# v4 D( I" p0 A1 `8 R3 O9 b                vis[j] = true;, N) a* R" [* U
                }
    8 Z9 m6 k6 ~* P2 U        }+ x: p+ n% Z8 K# @( @  t- ]) {
        }8 K3 E/ v* B1 S0 d$ ^5 s
        for(int i = 2;i<= 2019;i++) {
    ' C' p5 k" H% t! T2 }! j5 P        if(!vis) prime.push_back(i);- \8 ^0 v2 M3 Z% L- v
        }, d% A! i( R1 g0 O3 g
    }
    , |% M" f+ |7 W
    % Q! e$ |9 E4 J6 n5 cll dfs(int pos,int sum) {) d8 _3 E$ `0 ?: O
        if(f[pos][sum]!= -1) return f[pos][sum];
    - h* Y9 c* M$ D- k" Y% @- a    if(sum == 2019) return 1;: P: S( D% o/ X$ {9 l% P
        if(pos>= prime.size()||sum> 2019) return 0;1 @( n5 {2 e  z5 a
    0 q/ `% f# T1 p+ ~5 y1 r' w
        ll ans = 0;
    3 t$ Y7 C, B. z# V8 I    ans+= dfs(pos+1,sum);// 不要当前这个素数% b" O, k- ?, [: u2 l+ s
        ans+= dfs(pos+1,sum+prime[pos]);// 要当前这个素数
    % }( P  u, n8 P  t) M& ~    return f[pos][sum] = ans;
    0 S+ d6 r5 e9 O: ]/ b}
    0 ]4 x& V" j8 R3 G8 N& W' p% {
    % q+ `, Z# i  ^9 w) Aint main() {
    ' `! q- i1 p% h9 x' J    init();
    & W0 m5 @( r; F% @/ }1 n* l0 \5 H& ~0 i; O4 r
        mem(f,-1);
    4 g/ ^; @% m/ J* F% h    ll ans = dfs(0,0);
    5 a* r! ?$ `6 b' g  X3 q    cout<<ans<<endl;, x5 d5 n$ B* F+ S9 B

    % l* H" Z7 c. }+ p/ T; k; J    return 0;% Y3 ~) g: |) z
    }8 I) S9 B  [1 M8 S  K& }
    --------------------- / e) f7 d) u  ^, S  q# V
    作者:nka_kun
    6 \; }, r2 C5 E2 ]0 [7 |1 N2 I
    / Z$ O4 u, w% q/ E+ @6 [$ A; A/ ~, i# K+ m  d4 m7 @2 l9 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-4-21 19:35 , Processed in 0.324845 second(s), 51 queries .

    回顶部