HDU 1969 Pie
来源:互联网 发布:手机如何申请淘宝直播 编辑:程序博客网 时间:2024/05/01 19:32
题目链接~~>
做题感悟:刚开始做时完全没有思路,甚至题意都不怎么清楚,但是当下定决心解决它时就很容易解决了。
解题思路:二分:算出最小份蛋糕的体积和最大份蛋糕的体积,然后枚举每一种情况看是否满足(让esp = 1e - 7 即可,精确到 8 会超时)。
代码:
#include<stdio.h>#include<iostream>#include<map>#include<stack>#include<string>#include<string.h>#include<stdlib.h>#include<math.h>#include<vector>#include<queue>#include<algorithm>using namespace std ;#define LEN sizeof(struct node)#define pret(a,b) memset(a,b,sizeof(a))#define lld __int64const double PI = 3.1415926535898 ;const int INF = 99999999 ;const double esp = 1e-7 ;// 精确到 7 位即可,8位超时const long long mod= 1000 ;const int MX = 10005 ;int n,m ;double a[MX] ;bool find(double x){ int ans=0 ; for(int i=n-1 ;i>=0 ;i--) { ans=ans+(int)(a[i]/x) ; if(ans>=m) return true ; } return false ;}double binary_search(double le,double rt){ double mid ; mid=(le+rt)/2.0 ; // 如果le == rt 的情况 while(le+esp<=rt) { mid=(rt+le)/2.0 ; find(mid) ? le=mid : rt=mid ; } return mid ;}int main(){ int Tx ; scanf("%d",&Tx) ; while(Tx--) { scanf("%d%d",&n,&m) ; m++ ; double x,sum=0 ; for(int i=0 ;i<n ;i++) { scanf("%lf",&x) ; a[i]=PI*x*x ; sum+=a[i] ; } sort(a,a+n) ; double le=a[n-1]/m,rt=sum/m ; printf("%.4lf\n",binary_search(le,rt)) ; } return 0 ;}
0 0
- HDU 1969 Pie
- hdu 1969 Pie
- HDU 1969 - Pie
- hdu 1969 pie
- HDU 1969 Pie
- HDU-1969pie
- hdu 1969 Pie
- HDU 1969 Pie
- HDU 1969 Pie
- hdu 1969 Pie
- HDU 1969 Pie
- HDU 1969:Pie【二分法】
- HDU 1969--Pie【二分】
- HDU 1969 Pie【二分】
- hdu 1969 pie
- hdu 1969 Pie
- hdu 1969 Pie
- hdu 1969 pie
- java中static 的用法(转)
- Linux学习笔记:修改Tomcat默认的80端口指向8080端口
- HDU 3592 World Exhibition
- linux命令(一):查找
- Android UI控件详解-CheckBox(多选框)
- HDU 1969 Pie
- 让Source Insight支持ARM汇编.S文件关键字高亮,函数支持
- Hbase编程入门之MapReduce
- Mapreduce求TopK最大值
- #LeetCode Max Points On A Line
- 【Deep Learning】Deep Learning 教程翻译
- Codeforces 392B Tower of Hanoi(DP)
- 李振杰:腾讯入股京东=京东引狼入室
- 周报(第一周)