QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2506|回复: 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组决赛题解第二题
    / R' y$ f$ n" l: F
    5 G/ R/ E  w3 N/ b求两两不同的素数组成2019的方案数
    & P* r$ ?" Q: p% Z注意点:并不是两个不同的素数,再者直接搜索应该会TimeLimited,所以用dp或者记忆化搜索,方案数可能很多,记得用long long, n7 b. k. m- ^$ j
    结果: 55965365465060
    * n$ J/ b9 V1 {% X. ~+ y代码:
    . N$ G9 f0 R1 g3 Q#include<bits/stdc++.h>
    0 c) F1 ]! k( q8 M2 S! N#define mem(a,b) memset(a,b,sizeof(a))& m( F0 r0 e5 \) B9 c' B
    using namespace std;
    , M: n" m9 L3 Z5 \  etypedef long long ll;
    * B+ Y+ I" W7 B, ?/ Uconst int inf = 0x3f3f3f3f;
    ! L% Y9 Z/ i4 Gconst int maxn = 3e5+55555;
    7 `% l6 E( F  t) E/ K: A8 Nconst ll mod = 998244353;
    4 P+ J" i$ r- O. W& gconst double eps = 1e-7;
    $ X* Q$ H1 B6 Z: R; M$ v
    ! H6 O, k9 L- s- R+ k5 Nbool vis[12345];
    # y( N" f* o: @0 ^: E0 ivector<int>prime;  r/ y) ?0 V3 V9 Y0 m& b0 w3 h4 f% w
    ll f[3000][3000];0 s' t# C4 `" x  o- H
    . L7 t6 `% j; y* A* W6 C& m
    void init() { //素数筛* W" p/ _; k; X% v
        for(int i = 2;i<= 3000;i++) {
    8 F. X. R1 o) I) @  d0 S! ^        if(!vis) {+ ^: m: \' G' l3 x* b
                for(int j = i*i;j<= 3000;j+= i) {
    ' Q& r5 u  R# |+ C8 r; G8 q5 x$ N                vis[j] = true;
    ; |! R5 h% V* A! j+ O# i2 X0 X            }
    4 U! n4 y/ l# j6 {6 r+ d: J: Z        }8 N4 l2 G4 g. H! K  w
        }
    0 `+ U9 t- v  x2 e9 \" w6 y    for(int i = 2;i<= 2019;i++) {+ `& S* s; \9 e: }5 T' k
            if(!vis) prime.push_back(i);) C! V8 D5 b& K# x- w
        }
    5 @  F4 G# w3 @" b}0 s2 b' F7 Z/ R

    0 I7 I+ A; t# l# Yll dfs(int pos,int sum) {  q/ j7 J% b2 B: q% _0 J8 F
        if(f[pos][sum]!= -1) return f[pos][sum];
    / v3 s+ y# B& U+ J7 l    if(sum == 2019) return 1;8 c. k6 z) N# h( v
        if(pos>= prime.size()||sum> 2019) return 0;" o2 F5 @2 a: g7 q
    0 n$ }" i% ~0 h- R- F* o. ^$ C' `
        ll ans = 0;+ M1 [( s# |* ~) [3 d
        ans+= dfs(pos+1,sum);// 不要当前这个素数
    / E  U  n2 W4 c) x3 ^, Q    ans+= dfs(pos+1,sum+prime[pos]);// 要当前这个素数
    , U+ R; e5 U% R0 Q    return f[pos][sum] = ans;* \+ W9 `+ p0 K! K
    }
    6 ?2 }4 C- n  a. e7 e
    7 ]$ W- a) v3 B- Bint main() {
    . M, \. t8 d& j& D- ]    init();
    + T$ k3 z0 ^" e6 B
    ' P' z$ u' m. K: Y2 m    mem(f,-1);( E- ~: c# C5 Q0 ]0 x0 h
        ll ans = dfs(0,0);4 w9 U2 g8 b0 h# y1 c
        cout<<ans<<endl;9 I! S- [' j$ ?. ^$ Z' d' r
    3 c- _  |$ {2 }- u" G- E4 J
        return 0;7 b3 y, J' o: s- c0 T$ L
    }
    0 |+ S, W+ J% Z, d8 a& N! N--------------------- ! f# x9 p0 P( ^$ C0 S. N1 s! b
    作者:nka_kun 8 _2 R2 L! e" L% h2 X/ w! O/ S
    2 P5 N% d- p9 J( F" D

    + n5 I  F1 g( B" W; o
    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-7-29 07:22 , Processed in 0.329643 second(s), 51 queries .

    回顶部