1 条题解

  • 0
    @ 2009-3-24 4:01:39

    练83.2 汽水瓶

    解题思路

    每喝一瓶,换出时消耗3空瓶、喝后返1空瓶,净消耗2瓶;允许最后借一瓶再归还,使剩2空瓶也能多喝1瓶,因此答案floor(n/2)。

    正确性说明

    依照上述推导,逐步维护已处理部分的有效状态。每一步都完成当前项的贡献且不改变已确定的次序,结束时输出的状态恰好对应题目要求。

    易错点

    0是终止;n=1喝不到。

    复杂度

    每组时间O(1),空间O(1)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        int n;
        while (cin >> n && n)
            cout << n / 2 << "\n";
        return 0;
    }
    
    • 1

    信息

    ID
    517
    时间
    1000ms
    内存
    256MiB
    难度
    进阶
    标签
    递交数
    0
    已通过
    0
    上传者