zoukankan      html  css  js  c++  java
  • 题解 P6767 【[BalticOI 2020/2014 Day0] Roses】

    看到这题让我想到了小学的学生外出乘车选车。

    分析:

    定义 (x) , (y) 分别是第一家和第二家店一朵玫瑰花的价格,
    先只买每朵价格比较小的一家店,记录为 (ans)

    再计算两家店每束花的最小公倍数确定枚举次数,
    然后枚举更换每束花后的价格来跟 (ans) 进行比较。更新 (ans)


    光说不行,得上代码:

    #include "cstdio"
    #include "algorithm"
    #include "iostream"
    long long n, a1, a2, b1, b2, ans, go;
    int main() {
        std::cin >> n >> a1 >> b1 >> a2 >> b2;
        long double x = b1 * 1.0 / a1, y = b2 * 1.0 / a2;
        if (x < y)
            std::swap(a1, a2), std::swap(b1, b2);//为了方便之后的枚举
        ans = (n + a2 - 1) / a2 * b2;
        go = a2 / std::__gcd(a1, a2);
        for (long long i = go; i >= 0; i--) {
            long long t = i * b1;
            if (n - i * a1 >= 0)
                t = t + (n - i * a1 + a2 - 1) / a2 * b2;
            ans = std::min(ans, t);
        }
        std::cout << ans;
        return 0;
    }
    
    

    (small{Valentine 是人赢。})

  • 相关阅读:
    深入理解Java内存模型(JMM)
    Java基础知识①
    Java自旋锁的几种实现
    ConcurrentHashMap的CAS操作
    Java集合对比总结
    python模块--os模块
    python模块--random
    Datafactory 学习笔记
    Datafactory 实际使用案例
    Oracle三种排名函数使用
  • 原文地址:https://www.cnblogs.com/nakiri-ayame-suki/p/13892932.html
Copyright © 2011-2022 走看看