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;
     }
  • 相关阅读:
    记第一场省选
    POJ 2083 Fractal 分形
    CodeForces 605A Sorting Railway Cars 思维
    FZU 1896 神奇的魔法数 dp
    FZU 1893 内存管理 模拟
    FZU 1894 志愿者选拔 单调队列
    FZU 1920 Left Mouse Button 简单搜索
    FZU 2086 餐厅点餐
    poj 2299 Ultra-QuickSort 逆序对模版题
    COMP9313 week4a MapReduce
  • 原文地址:https://www.cnblogs.com/wft1990/p/6233229.html
Copyright © 2011-2022 走看看