嘟嘟嘟

一道三分入门题。

参考二分,三分就是每一次把区间分成三段,然后舍弃一段,不断缩小范围直到一个点。

一般用于求单峰函数的最值问题。

这道题发现V和r成一次函数的关系,因此三分r。

下面给出三分板子。其实三分的m1, m2没必要把区间分成均等的三份,只不过这样写的方便。

 #include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cctype>
#include<vector>
#include<stack>
#include<queue>
using namespace std;
#define enter puts("")
#define space putchar(' ')
#define Mem(a, x) memset(a, x, sizeof(a))
#define rg register
typedef long long ll;
typedef double db;
const int INF = 0x3f3f3f3f;
const db eps = 1e-;
const db Pi = acos(-1.0);
//const int maxn = ;
inline ll read()
{
ll ans = ;
char ch = getchar(), last = ' ';
while(!isdigit(ch)) {last = ch; ch = getchar();}
while(isdigit(ch)) {ans = ans * + ch - ''; ch = getchar();}
if(last == '-') ans = -ans;
return ans;
}
inline void write(ll x)
{
if(x < ) x = -x, putchar('-');
if(x >= ) write(x / );
putchar(x % + '');
} db S, r; db calc(db r)
{
db l = (S - Pi * r * r) / (Pi * r);
db h = sqrt(l * l - r * r);
return Pi * r * r * h / 3.00;
} int main()
{
while(scanf("%lf", &S) != EOF)
{
db L = , R = sqrt(S / Pi);
for(int i = ; i <= ; ++i)
{
db m1 = L + (R - L) / 3.00;
db m2 = R - (R - L) / 3.00;
if(calc(m1) <= calc(m2)) L = m1, r = m2;
else R = m2, r = m1;
}
db l = (S - Pi * r * r) / (Pi * r);
db h = sqrt(l * l - r * r);
db V = Pi * r * r * h / 3.00;
printf("%.2f\n%.2f\n%.2f\n", V, h, r);
}
return ;
}

POJ3737 UmBasketella的更多相关文章

  1. poj3737 UmBasketella 真正的三分

    之前用二分写三分的板子...现在正式写一个三分,但是也不难,就是把区间分为三段就行了.求二次函数的峰值,每次取大的区间就行了. 题干: 最近几天,人们总是设计出多功能的新东西.例如,您不仅可以使用手机 ...

  2. UmBasketella

    UmBasketella http://poj.org/problem?id=3737 Time Limit: 1000MS   Memory Limit: 65536K Total Submissi ...

  3. POJ3737【数学】

    高中数学题?初中吧///然后注意一下POJ的double输出用%f.......... #include <iostream> #include <stdio.h> #incl ...

  4. [SinGuLaRiTy] 分治题目复习

    [SInGuLaRiTy-1025] Copyrights (c) SinGuLaRiTy 2017. All Rights Reserved. [POJ 1905] 棍的膨胀 (Expanding ...

随机推荐

  1. Java调度线程池ScheduleExecutorService

    如果在一个ScheduleExecutorService中提交一个任务,这个任务的调度周期设置 的时间比任务本身执行的时间短的话会出现什么情况?也就是在线程调度时间已经到了 但是上次的任务还没有做完的 ...

  2. 封装Lua for C#

    http://blog.csdn.net/rcfalcon/article/details/5583095

  3. 九度oj题目1518:反转链表

    题目1518:反转链表 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:2567 解决:948 题目描述: 输入一个链表,反转链表后,输出链表的所有元素.(hint : 请务必使用链表) ...

  4. HDU 5318——The Goddess Of The Moon——————【矩阵快速幂】

    The Goddess Of The Moon Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/ ...

  5. backbone应用笔记

    由于公司手机端web的需要,最近开始用上backbone,之前觉得很难学,也一直没看到前端mvc具体是个啥,后来由于项目紧急,就抽空看了一遍underscore和backbone的源码,收获还是蛮大的 ...

  6. 对key中有数字的字典进行排序

    word_cloud = []cc = [{"c58":341,"c59":525,"c56":507,"c57":34 ...

  7. 小程序中搜索文件,阅览pdf,分享文件链接,评论表情符号

    小程序中搜索文件,阅览pdf,分享文件链接,评论表情符号 https://blog.csdn.net/hotqin888/article/details/84111389 小程序中打开网页和pdf h ...

  8. PLC总结

    PLC编程总结 PLC控制部分总体有三大部分组成,PLC硬件,组态以及梯形图程序.PLC硬件应与组态一一对应,不容有任何偏差:而梯形图与操作的组态的IO口也应该一一对应.因此,整个系统达到了由梯形图程 ...

  9. union、except和intersect查询

    1. union联合查询  (合并) select r.room_id from room r union select rp.num from room_type rp 要求表1和表2的查询结果结构 ...

  10. centos-7.2 node.js免编译安装

    cd /usr/local/ wget https://npm.taobao.org/mirrors/node/v8.9.3/node-v8.9.3-linux-x64.tar.gz tar -zxv ...