【小数二分】
题意:
有n个派,f+1个人,给每个人分一块同样体积的派,可以破坏派,问每个人分得的派的最大体积为多少,答案保留四位小数。
题解:采用小数二分做(第一次接触到小数二分的题,注意小数二分与整数二分的不同)
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include<cstdio> #include<cmath> #define PI acos(-1.0) using namespace std; int n,friendsnum; double a[10010],maxsize,cul; int judge( double size){ int sum=0; for ( int i=0;i<n;i++) { sum+=( int )(a[i]/size); if (sum>=friendsnum) return 1; } return 0; } double binary_search(){ double high=cul/friendsnum,low=maxsize/friendsnum; double size=(high+low)/2; while (high-low>0.0000001) { if (judge(size)) low=size; else high=size; size=(high+low)/2; } return size; } int main(){ int t; scanf ( "%d" ,&t); while (t--) { maxsize=0;cul=0; scanf ( "%d%d" ,&n,&friendsnum); friendsnum++; int temp; for ( int i=0;i<n;i++) { scanf ( "%d" ,&temp); a[i]=(temp*temp*PI); cul+=a[i]; if (maxsize<a[i]) maxsize=a[i]; } double answer=binary_search(); printf ( "%.4f\n" ,answer); } return 0; } |
分类:
题解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现