QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 12340|回复: 3
打印 上一主题 下一主题

2006 年百度之星程序设计大赛初赛题目 1

[复制链接]
字体大小: 正常 放大

1341

主题

738

听众

2万

积分

数学中国总编辑

  • TA的每日心情

    2016-11-18 10:46
  • 签到天数: 206 天

    [LV.7]常住居民III

    超级版主

    社区QQ达人 邮箱绑定达人 元老勋章 发帖功臣 新人进步奖 原创写作奖 最具活力勋章 风雨历程奖

    群组2011年第一期数学建模

    群组第一期sas基础实训课堂

    群组第二届数模基础实训

    群组2012第二期MCM/ICM优秀

    群组MCM优秀论文解析专题

    跳转到指定楼层
    1#
    发表于 2010-5-6 18:56 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta |邮箱已经成功绑定
    饭团的烦恼 5 H/ ~  |& T9 W4 O8 }$ P

    ) q  V' C" o2 d7 [3 F2 f) |! T; N“午餐饭团“是百度内部参与人数最多的民间组织。 : k9 H( V9 \+ ?  w* c

    3 I# U% ?- v$ H同一个部门的,同一间大学的,同一年出生的,用同一种型号电脑的,员工们总是以各种理由,各种借口组织各种长久的,临时的饭团。
    7 L  F( T) H$ c6 y, h. w
    0 V6 N. E3 ^- Q% I+ u/ F) {参加饭团,不仅可以以优惠的价格尝到更加丰富的菜式,还可以在吃饭的时候和同事们唠唠嗑,吹吹水,增进感情。 . V9 {8 d2 d1 V: r9 ~
    9 c- q9 L  a$ L, K
    但是,随着百度的员工越来越多,各个饭团的管理随即变得烦杂。特别是为了照顾员工们越来越挑剔的胃口,饭团的点菜负责人背负的责任越来越大。现在,这个重担落在百度之星的肩上,因为,你们将要为所有的百度饭团设计一个自动点菜的算法。 ) V+ N# o- ]7 U# _5 F
    ) X+ _* i9 w$ n7 p& X& _2 k
    饭团点菜的需求如下: 9 `6 Q+ Y# y  x" x

    ; }0 U% j! V2 P/ ]' }1 . 经济是我们要考虑的一个因素,既要充分利用百度员工的午餐补助,又不能铺张浪费。因此,我们希望最后的人均费用越接近 12 元越好。 ) e1 t/ e0 k  q! G
    ; m) g' w2 C- e) i9 c" ^
    2 . 菜式丰富是我们要考虑的另一个因素。为简单起见,我们将各种菜肴的属性归结为荤菜,素菜,辛辣,清淡,并且每个菜只能点一次。 ; g' ~, U; o4 x+ {
    ' e' A$ D& p3 |8 R4 I2 e$ T
    3 . 请紧记,百度饭团在各大餐馆享受 8 折优惠。 / Q1 A- x; ^8 x- q! l
    2 A; e( T# ~2 z1 S; z& i" c3 ?
    输入数据描述如下: 1 U8 F, U  D2 u6 I$ u! l  X/ n
    7 w2 d6 t# M# I& `
    第一行包含三个整数 N , M , K ( 0<N<=16 , 0<M<=N , 0<K<=12 ),分别表示菜单上菜的数目,饭团需要点的菜的数目,就餐的人数。
    % F" Y, P! H. H/ Z- |4 C! [. H) T' t% ?) |$ ~! o
    紧接着 N 行,每行的格式如下:
    - Q* j1 p. |3 ?+ G8 U, q7 N& a7 T$ q" x
    菜名(长度不超过 20 个字符) 价格(原价,整数) 是否荤菜( 1 表示是, 0 表示否) 是否辛辣( 1 表示是, 0 表示否)
    # K/ R# [% n1 C) ~  Q5 N# {+ z0 ^' S2 y) Q
    例:
    ' c7 P- ]" {' [4 ]8 F& s) E! T& H, _6 ]4 {5 N$ _% I) g
    水煮鱼 30 1 1
    2 D' O- B: n, E  e* w& ^, i0 Q2 D$ {8 h3 B( g; [  t
    紧接着是 a b c d 四个整数,分别表示需要点的荤菜,素菜,辛辣,清淡菜的数目。
    ! D& W6 A4 z6 f* i0 R) O( M; Z
    ' }& q2 G7 g: S3 }: F0 ?输出数据:
    3 X9 ^; ]- _: v6 j- c
    / t8 i0 u, t) G" y/ C对于每一测试数据,输出数据包含 M+1 行,前 M 行每行包含一个菜名(按菜名在原菜单的顺序排序)。第 M+1 行是人均消费,结果保留两位小数。 0 v4 ?2 D4 U1 R; l: o& U) N

    ; G6 [" e* V, P3 H8 h# Q0 v( ]说明: / z& |/ P: a$ C  g  d
    % b' C/ I9 P, k8 n
    1 .结果菜单的数目应该恰好为 M ,荤菜,素菜,辛辣,清淡菜的数目恰好为 a , b , c , d 。在满足这样的前提下,选择人均消费最接近 12 元的点菜方案。题目数据保证有且仅有一个解。 ! e! H  G# n3 d4 S  s* }# m

    2 S! k. g% B3 K% ~2 .每组测试数据的结果用一个空行隔开。末尾不要有多余的空行。
    + W2 T+ r! J, _% z. V$ C7 a; y5 v- z: v9 {/ u! `
    输入样例

    0 ~' c  ]& K" Y( _9 {+ t! Z
    3 2 2 1 f9 l. m8 [7 _- d1 w6 z

    & F# T6 F% A. _! `# G' M9 W; n( ^水煮鱼 30 1 1
    ! y. V' p) X: d2 i6 i# p- M: g
    8 g' |& {" m0 I# J$ ^: S口水鸡 18 1 1 * n' U* m8 Q+ K
    3 e( W7 z. f4 j3 ?8 u) U* ^5 \+ [
    清炖豆腐 12 0 0 # L: o2 K1 O( t3 ~; h$ A

    7 y' d* D9 E5 `/ C1 1 1 1 & s! j7 c& K; l: n


    # T. j8 k. g, s/ n& ~
    ! R) ]  w1 p" Q" n输出样例


    3 _# z- `8 T4 p/ M5 ?2 F) q& z口水鸡
    : W' v) O. z- Y
    % K& ~! w% d; X+ V/ D清炖豆腐 ! T3 R2 Z5 e4 P6 o, `# Z9 ?- `

    4 f+ {+ e/ y- X7 G" V) G12.00
    - x- v* n: }% n( y* u

    5 V+ y6 c2 g; \) t% {- K4 B# c$ C

    # F7 m- a: t2 x, [
    # V) T2 r! I4 @1 V3 U1 L时间要求: 1S 之内 # I! J4 b% l- h. I

    ! q9 G( ]' h) H) Z9 U9 {example:
    5 _% P5 X( {  Z3 @8 v. A+ u#include <cstdlib>1 F1 k4 @5 G) J, {
    #include <iostream>& J7 b* e% ?# j5 z: u( v. w
    / t" D2 ^7 o- t2 h/ k; j
    using namespace std;* Z7 J$ @* M: I! |! j! ~# @- P9 P- E
    # P( |% E# k" w. {

    3 Q& H4 k4 x6 Y- H7 t0 W. ustruct cai
    : v$ H% T. w& c; l( [$ }4 k{( m' w- L" p8 P+ _1 [/ u# z9 G) S
           string cainame;+ y) _& \$ G6 P% X
           int price;1 W8 |) K1 U/ L) J/ o3 K# Q
           int hun;
    1 n" d  h# T8 X. c3 r/ Y% W2 _, x       int la;) o9 N4 w2 S% c+ C/ F6 d: [5 X# \
           };( o: H7 Y! ^- s. |
    int* alltotal=new int[30];+ O& O5 u5 T* H! t8 D, a/ p0 r% w: {
    int pos=0;/ L0 n+ w! u+ Q( ?/ c9 \
    cai* pcai; , x% m& {& T  g3 @8 ~: t
    int N=3;  4 `* c+ `+ w- `& L+ ^$ e3 ?  n! o
    void fun(int * select,int n,int M,int a,int b,int c,int d,int total);8 L( H- o. T$ u0 F0 U& q4 a" g, q/ Q
    int main(int argc, char *argv[])5 d9 r8 f/ K# u
    {8 A% _; W; }6 Y: d1 E9 r
        int M=2,K=2;  y* d* t4 i' R  e) V
        int a=1,b=1,c=1,d=1;, U7 C- F0 _% P6 S" y
        pcai = new cai[N];
    " H' e6 w. S6 R% x2 D. v. Y9 b    pcai[0].cainame="water fish";
    3 o7 W. l, ?% g# b8 u$ T/ q/ ^+ a    pcai[0].hun=1;
    8 L0 H% l" r; P6 a* h    pcai[0].la=1;6 \: D1 |4 v3 ^9 T' L6 O
        pcai[0].price=30;
    0 U5 K4 A3 N/ C% J9 g+ i5 C    pcai[1].cainame="mouth fish";
    ' _! v/ e' [3 ~( F    pcai[1].hun=1;# W# W! y; Z8 w) L! O" M& G8 i
        pcai[1].la=1;
    " g+ U( h1 x& P" U. \) c    pcai[1].price=18;
    & \4 Z8 c; T) ^: p( p& u+ Q$ \2 F    pcai[2].cainame="doufu";  i: c& F  S4 `5 d& j$ N
        pcai[2].hun=0;
    * |% V' I* G8 a8 O4 m    pcai[2].la=0;
    0 f' l0 F/ t2 l1 Y4 W    pcai[2].price=12;
    & U5 r0 B4 o: B! W/ C    for(int i=0;i<N;i++)
    6 o6 x0 j1 u6 ~/ r7 J% j3 Y    {6 z/ q  e" b8 {- W& c9 u, U
            if( (pcai.hun==1 && a>0) ||(pcai.hun==0 && b>0) || (pcai.la==1 && c>0) || (pcai.la==0 && d>0))& T2 k1 G7 Y( M7 g3 M3 v% Y( G* B5 b
            {
    3 g4 Z$ K" A- M1 d: M0 a3 _$ i        int ta=a,tb=b,tc=c,td=d;    ) p; a' I, u8 c  {+ |  D
            int* select=new int[1];   
    $ m3 S/ k: Z$ F) U        select[0]=i;
    : i; }2 E* ]7 e- Q  s) c        if(pcai.hun==1)ta--;else tb--;
    , `! h# S1 V3 T3 O3 B& |! s9 ?& Y        if(pcai.la==1)tc--;else td--;/ ?( A$ F2 i' W( M$ q; J1 X0 h
            fun(select,1,M-1,ta,tb,tc,td,pcai.price);
    ! X5 Q5 Z* X$ X% O8 T# j9 X        delete[] select;- a# a, {6 l# B% d/ K8 B+ ?* `5 w
            }
    + O0 s$ v* j9 [3 G( `    }
      G; }1 v8 u3 S# g    for(int i=0;i<pos;i++); b  \: |5 `/ C9 e( W
        cout<<alltotal<<endl;5 m& R7 q  F3 C" {$ {. a  L
        delete alltotal;
    ( c" l: k) X. f1 J0 h- }    delete []pcai;
    ' r, P) u: d0 e, h+ ^4 I4 J3 R    system("PAUSE");3 y- S1 W4 R/ _0 K0 a0 }
        return EXIT_SUCCESS;( J5 Z1 b3 A9 X( l$ v
    }
    . N' `! D# N9 h7 C, L4 P) ivoid fun(int * select,int n,int M,int a,int b,int c,int d,int total), B4 _6 b* a- E4 N9 Q$ A/ s1 T
    {$ V6 |: _; o' G; g$ l; G
        //if(a<=0&&b<=0&&c<=0&&d<=0)return 0;
    * v% v% Y4 A4 [2 C$ [2 X    //getchar();
    , c) y# A0 M: L* ]. i* {: f    //cout<<n<<"|"<<M<<"|"<<a<<"|"<<b<<"|"<<c<<"|"<<d<<"|"<<total<<"|"<<endl;
    0 V6 B' z6 n' y$ w& {( ~    if(M<=0 && (a>0||b>0||c>0||d>0)){cout<<"impossible"<<endl;return;}
    0 o; ?, A( D! Z" G5 a5 ~3 \    if(M<=0 && (a<=0&&b<=0&&c<=0&&d<=0)){cout<<total<<endl;alltotal[pos++]=total;return;}
    8 j  A7 [, g) o; N% i" D0 n$ S    for(int i=select[n-1];i<N;i++)5 F8 k  r, @; F4 v! S
        {
    ! i2 A3 B! h+ E7 u% r' Q8 k# y         for(int j=0;j<n;j++)if(select[j]==i)continue;' C' W! `* W  x" J9 b
            if( (a<=0&&b<=0&&c<=0&&d<=0) || (pcai.hun==1 && a>0) ||(pcai.hun==0 && b>0) || (pcai.la==1 && c>0) || (pcai.la==0 && d>0))7 t& t9 E3 s* z1 M) t
            {" B/ }  F- ~5 e. S9 X
            int ta=a,tb=b,tc=c,td=d;( Y2 ~' A( O' @
            int* myselect=new int[n+1];    ' R6 t5 J! w  M
            for(int k=0;k<n;k++)myselect[k]=select[k];
    . G9 ?# |, h% N4 _( A; j        myselect[n]=i;
    . c1 w: \) V' D0 b: ]        if(pcai.hun==1)ta--;else tb--;, p! L2 H5 Y9 L+ c! e, G" ]% [
            if(pcai.la==1)tc--;else td--;
    ; i" \7 z0 Y3 P" X6 p% W/ ~$ i        fun(myselect,n+1,M-1,ta,tb,tc,td,total+pcai.price);
    * ?" ^7 G8 w7 w8 g  C        delete[] myselect;1 _0 f% \  C, M+ j; q
            }2 Q8 k7 U1 ]) N1 K+ t( j* u
        }
    : L! M( H7 E0 `3 E2 u& ?; i( P}
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    928171481        

    2

    主题

    6

    听众

    34

    积分

    升级  30.53%

    该用户从未签到

    回复

    使用道具 举报

    3#
    无效楼层,该帖已经被删除
    4#
    无效楼层,该帖已经被删除
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-4-29 01:52 , Processed in 0.482721 second(s), 66 queries .

    回顶部