QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2512|回复: 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" E5 K' ~) h/ R5 U
    , y0 u7 r9 F: B
    求两两不同的素数组成2019的方案数
    & }+ a4 `5 v) b: U4 }) m% z( B注意点:并不是两个不同的素数,再者直接搜索应该会TimeLimited,所以用dp或者记忆化搜索,方案数可能很多,记得用long long! c1 L. h0 M3 j9 ]
    结果: 559653654650608 ]' x( j+ I" _4 m
    代码:
    . Z: b, n. O* C4 a% i" X; B#include<bits/stdc++.h>0 `/ X+ p' @% h) {0 M2 ]* Q1 d$ S2 N% k4 N
    #define mem(a,b) memset(a,b,sizeof(a))
    " F# W( l" {6 L2 A6 ~using namespace std;# L3 Q( `) m) @/ j" r
    typedef long long ll;! c9 Q5 Z6 ]) x4 _
    const int inf = 0x3f3f3f3f;
    6 b- a; d* l+ f7 Uconst int maxn = 3e5+55555;* }. b4 w* c4 H3 B6 s
    const ll mod = 998244353;- ~1 g0 ~; W9 H0 o7 W
    const double eps = 1e-7;
    . N- M2 I$ p* {$ {2 X0 ]" U, H8 q/ Y" w, W" p; e/ f. U- t
    bool vis[12345];+ e7 `/ @3 [2 s' ?
    vector<int>prime;/ Q8 ~; Z0 Z4 B" ]0 c8 F: {
    ll f[3000][3000];
    , B! O  l/ B* |: i2 {/ K0 \$ L) n8 B; \, f6 J
    void init() { //素数筛
    ! k& ^1 q# ^: g    for(int i = 2;i<= 3000;i++) {8 S4 C, s7 {  O6 S) d; E6 I: B
            if(!vis) {
    3 d& o# J/ ?1 F6 [4 N9 m            for(int j = i*i;j<= 3000;j+= i) {6 `# i+ J. K+ v3 {/ {
                    vis[j] = true;# U+ Y4 i' R, P" J$ E5 {3 l. H+ A
                }
    1 X2 i! h' k2 `7 e* b        }
    ( H% J) D* z2 b9 f    }/ |" A" \2 F! T: }5 N: i5 Z# {
        for(int i = 2;i<= 2019;i++) {  I' {+ v- ]+ ~: F# I
            if(!vis) prime.push_back(i);
    + q7 y8 M' m9 s$ J/ H4 e0 G. d    }1 O& v$ {9 d9 n" Q8 _+ q, V( ^
    }
    : p; f: ]* J4 }4 U2 R: v# Z* C9 c  s! ^2 z" k
    ll dfs(int pos,int sum) {
    : g" ?) J1 i7 k+ @- |( }# l0 o    if(f[pos][sum]!= -1) return f[pos][sum];, P: S' K. _; I9 t
        if(sum == 2019) return 1;5 N1 a8 J3 ?2 E- v
        if(pos>= prime.size()||sum> 2019) return 0;
    ' P, Z) \0 z+ n7 R( p( A! m- p
    / B, Y7 A# Z4 ^7 S' W. D9 v* \    ll ans = 0;
    - \8 Z* ?2 x* P! m    ans+= dfs(pos+1,sum);// 不要当前这个素数
    1 }. U) o0 b7 }& y- M    ans+= dfs(pos+1,sum+prime[pos]);// 要当前这个素数5 p' y2 h3 V7 R. a% l/ t6 \
        return f[pos][sum] = ans;# k$ T/ G, K' k4 w! J1 b# u# s
    }
    * s' Z, L* l3 B1 v5 B, Y! v  V6 l
    int main() {+ @5 j4 q# i- R. E
        init();
    % Y- w8 u7 d# x" R! M. y$ D3 Y+ f/ h" {& j" ], c( b
        mem(f,-1);
    5 R* o  P- P8 ]) ^+ y) S9 T    ll ans = dfs(0,0);
    ) q" h3 M4 \; e3 R" u& ^    cout<<ans<<endl;
    . V( v; i! {4 M! z$ _4 l4 y
    4 g  W& z( H8 d3 w1 ?$ k3 p. ?    return 0;
    % k! v: \$ h1 g1 I0 j+ w}
    - q# E5 s+ J( b" T3 {$ |# I; K---------------------
    6 w% y  n( Y8 l7 @2 B$ o9 N6 E6 k4 y作者:nka_kun 3 P- s" u& p5 R: ]8 S% X

    8 W- d# p; V+ a  }
    5 U- q& H9 h* L9 h( i8 O7 _; N7 W
    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-30 19:05 , Processed in 0.419053 second(s), 52 queries .

    回顶部