博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1551 恶心的卡精度题
阅读量:4659 次
发布时间:2019-06-09

本文共 1370 字,大约阅读时间需要 4 分钟。

此题巨恶心,花了我好几天才过掉……

首先是题目巨难懂,我是读了一个多小时才差不多明白的。读懂题意后马上想到用二分查找,代码打出来了,却死活过不了。几天以后,终于在北大讨论版看到有人说,只要输入的时候+0.005再转成整数就不会丢失精度了,泪流满面啊……

/*  * hdu1551/win.cpp  * Created on: 2011-11-15  * Author    : ben */ #include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std; const int MAXN = 10100; typedef long long typec; typec cables[MAXN]; int N, K; bool judge(typec ans) { typec k = 0; for (int i = 0; i < N; i++) { k += cables[i] / ans; } if (k >= K) { return true; } return false; } int solve(typec high) { typec low = 1, mid; typec ans = 0; while (low <= high) { mid = (low + high) / 2; if (judge(mid)) { low = mid + 1; ans = mid; } else { high = mid - 1; } } return ans; } int main() { #ifndef ONLINE_JUDGE freopen("data.in", "r", stdin); #endif while (scanf("%d%d", &N, &K) == 2) { if (N == 0 && K == 0) { break; } typec total = 0; double temp; for (int i = 0; i < N; i++) { scanf("%lf", &temp); temp += 0.005;//此题过与不过的核心 cables[i] = (typec) (temp * 100); total += cables[i]; } typec ans = solve((typec) (total / K)); printf("%.2f\n", ans / 100.0); } return 0; }

转载于:https://www.cnblogs.com/moonbay/archive/2011/11/18/2254202.html

你可能感兴趣的文章
Linux下常用的压缩与解压命令
查看>>
第一周的博客作业
查看>>
linux的awk命令解读
查看>>
JavaScript内部原理实践——真的懂JavaScript吗?(转)
查看>>
android5.0之toolBar
查看>>
POJ--2689-C++
查看>>
better-scroll的使用方法,动态创建dom使用better-scroll
查看>>
PHP中的面向对象魔术方法大全
查看>>
数据库常用函数详解
查看>>
jquery 监听不起效果的小问题汇总
查看>>
eclipse构建及运行maven web项目
查看>>
Photoshop 图文并茂常用快捷键
查看>>
linux基础命令2(ls,cd)
查看>>
面向对象初识
查看>>
Word 2010中查找和替换功能高级技巧(转)
查看>>
优先队列
查看>>
一起学wp7 XNA游戏开发
查看>>
堆内存破坏检测实战--附完整调试过程
查看>>
【knockoutjs】 Computed VS Pure Computed 区别
查看>>
JS向数组中添加/删除元素
查看>>