zoukankan      html  css  js  c++  java
  • TOJ 2776 CD Making

    TOJ 2776题目链接http://acm.tju.edu.cn/toj/showp2776.html

    这题其实就是考虑的周全性。。。  贡献了好几次WA, 后来想了半天才知道哪里有遗漏。最大的问题就是, 当零头是13的时候, 不一定前面的光盘都刻录到最大值。比如29,16这种情况, 如果前面的刻录最大值,这样就需要3个盘,而最少的却是 2个就够了,(15,14) 即可;知道这种情况,这题基本就可以了;

    注意一下这几个数据:

    13 15 输出为2

    29 16 输出为2

     

    这条题目看起来很容易,但是特殊情况很多。稍微考虑得不全面,就会有情况没有考虑到。


    我们按b来分类:

    1如果b<=12,那很爽,直接a/b就可以;

    2如果b=13,那也很爽,直接把b当成12做就可以;

    3如果b=14,如果最后一张CD里放了13首歌,那就只好再来一张;

    4如果b>=15,如果最后一张CD里放了13首歌,不需要再来一张CD,从前一张里放一首在最后一张即可;

    但是这样就有一个问题,如果只有1张CD,没有前面一张。这种情况下只有加一张CD。

    至此,所有的可能性都讨论到了。

     

    #include<iostream>
    using namespace std;
    
    int main()
    {
        int group;
        cin >> group;
        
        while(group > 0)
        {   int a = 0;
            int b = 0;
            int c = 0;
            
            group--;
            
            cin >> a >> b;
            int sum = 0;
            
            if(b == 13)//b==13的情况 
              b = 12;
            sum = a / b;
             c = a % b;
            if(c!=0)
              sum = sum + 1;
            
            if(c == 13&&(b==14||sum==1))//注意此处   
            //if(c==13)//这样不对 
               sum = sum + 1;
            cout << sum << endl;
            
        }
        return 0;
     }
  • 相关阅读:
    一个matlab小程序:挑出沪市A股年报与一季度报在同一天发布的股票
    AWK
    matlab搜索路径
    从新浪财经上下载交易明细数据并统计每天的买卖笔数(shell 命令行)
    AWK截取字符串
    tar GNU
    工作效率上的错觉(转载)
    matlab双精度浮点数编码及区间覆盖(原创)
    DNS服务器设置(Ubuntu10.04)
    sed
  • 原文地址:https://www.cnblogs.com/wft1990/p/6233229.html
Copyright © 2011-2022 走看看