HDU
来源:互联网 发布:08最新电影源码 编辑:程序博客网 时间:2024/06/10 00:41
题意:给出两种操作:
如果按下按钮1,会使数量+1,总价对应增长单价数目(因此按下按钮1不会改变单价)
如果按下按钮2,会使总价加1,数量不变(按下按钮2会使单价增加)
现在问至少多少步可以使得 按钮1数字为x, 按钮2数字为y;
思路:很明显的贪心思路是先按按钮2到一定单价,然后按一下按钮1,重复此步骤直到满足题意,但是关键是按钮2每次要按多少下,其实这取决于最后的单价,因为单价只能变大不能变小,因我们每一步操作都要保证单价不能超过最终单价的大小,分析到这,就可以求出每次贪心按y的上限了,要注意的一点就是最终总价只是要显示出来的是y,并不一定真正是y,但一定不会大于等于 y + 1.
PS:eps 从1e-1到1e-6都能过,再高就会wa
代码:
#include<bits/stdc++.h>using namespace std;const double eps = 1e-4;int main(){double x, y;while(~scanf("%lf %lf", &x, &y)){if(x > y){printf("-1\n"); continue;}int ans = x - 1, delta;double one = (y + 1 - eps) / x; // 单价 double pre = 1; //上一次y的真实值 for(int i = 1; i < x + eps; i++){delta = floor(one * i - pre);ans += delta;pre += delta;pre = pre / i * (i + 1); // 按一次x以后的效果 }printf("%d\n", ans);} return 0;}
阅读全文
0 0
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- HDU
- Python小程序 -- 人民币小写转大写辅助工具
- HDU4596Yet another end of the world(扩展欧几里得)
- 1030. 完美数列(25)--PAT乙级
- 在windows10上安装tensorflow(GPU)
- java 实现排列组合Permutation and Combination和链式不相邻排列组合和环形不相邻排列
- HDU
- java连接oracle数据库代码
- 基于CentOS的MYSQL基础介绍
- CentOS7设置定时任务 每隔30分钟执行一次命令
- 软件需求 目录
- 用小米查wifi密码
- 怎样把从CD中的cue和flac文件中提取出单曲?
- JavaWeb入门_部分
- Median of Two Sorted Arrays