• AOJ789 买酒


    买酒
    Time Limit: 1000 ms   Case Time Limit: 1000 ms   Memory Limit: 64 MB
    Total Submission: 70   Submission Accepted: 22
     
    Description
    众所周知,西瓜是一个很爱喝酒的人。有一天西瓜和朋友去酒楼喝酒,却发现酒楼在大酬宾,活动规则如下。
    1.全场只要买酒可以买二送一,买2瓶酒就可以送一瓶酒,买4瓶酒就送两瓶酒。
    2.4个空瓶可以换一瓶酒。
    3.10个酒瓶盖可以换一瓶酒。
    4.拿瓶子和盖子换酒可以享受换二送一的优惠(比如8个空瓶可以换两瓶酒,然后再送一瓶;12个空瓶+10个盖子可以换4瓶酒,再送两瓶),并且换来的酒产生的的瓶盖和空瓶依旧可以继续拿给酒楼换酒。
    现在西瓜和朋友们的钱一共有N元, 酒一瓶M元,请问他们最多可以喝多少瓶酒。
    Input
    题目包含多组输入,EOF结束,数据最多不超过1000组,对于每组数据包含两个数字N,M表示西瓜和朋友们所有钱的数量和一瓶酒的单价,其中1<=N<=1000000, 1<=M<=50
    Output
    对于每组输入,输出单独一行,表示西瓜和他的朋友们最多能喝到多少瓶酒。
    Sample Input
    Original Transformed
    500 10
    50 5
    Sample Output
    Original Transformed
    154
    27
    
    Hint
    trick较多,请谨慎读题并且思考情况
     
    校赛题
    买二送一,一个要注意的是当买的酒数量为奇数时,为保证最优,将数量减一,然后酒瓶数量加4或盖子数量加10.
     
     
    #include<cstdio>
    #include<iostream>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<map>
    #include<queue>
    #include<vector>
    #include<cmath>
    #include<utility>
    using namespace std;
    typedef long long LL;
    const int N = 1008, INF = 0x3F3F3F3F;
    int main(){
        int n, m;
        while(~scanf("%d %d", &n, &m)){
            int ping = 0, gai  = 0;
            int ans = 0;
            ans = n / m;
            ans += ans/ 2;
            ping = ans;
            gai = ans;
            while(ping >= 4 || gai >= 10){
                int tp = ping / 4 + gai / 10;
                bool flag = 0;
                if(tp % 2 && tp > 1){//注意
                    tp--;
                    flag = 1;
                }
                tp += tp/ 2;
                ans += tp;
                ping = ping % 4 + tp;
                gai  = gai % 10 + tp;
                if(flag){
                    ping += 4;
                }
            }
            cout<<ans<<'
    ';
        }
        return 0;
    }
    

      

  • 相关阅读:
    OI竞赛常见错误总结
    lis最长上升子序列o(nlogn)优化
    链表及其简单应用
    栈及其简单应用
    哈希表Hash:概念与基本操作
    队列及其简单应用
    poj1418 Viva Confetti 判断圆是否可见
    poj1981 Circle and Points 单位圆覆盖问题
    poj2187 Beauty Contest(旋转卡壳)
    poj2932 Coneology (扫描线)
  • 原文地址:https://www.cnblogs.com/IMGavin/p/5741770.html
Copyright © 2020-2023  润新知