CF98C Help Greg the Dwarf 题解
CF98C Help Greg the Dwarf 题解
为什么不三分?
首先我们考虑如何求出答案。
如图,考虑设夹角为 \(\theta\),那么可以得到表达式:
\]
整理可得:
\]
于是可以考虑观察这个函数的单调性:
明显这是个单峰函数。
考虑合法的大小即是此函数的最小值。
特判掉 \(l \le b\) 或者 \(l \le a\) 的情况:
\(l \le b \implies w = \min(a, l)\)
\(l \le a \implies w = \min(b, l)\)
所以考虑三分答案求最小即可。
不过需要判断无解的情况!
注意一下 CF 上似乎不能使用
long double
……亦或是我写法的问题 QwQ
#include <stdio.h>
#include <math.h>
#define ldb double
int a, b, l;
ldb calc(ldb theta) {
ldb c = cos(theta), s = sin(theta);
return a * s - l * c * s + b * c;
}
int main() {
scanf("%d %d %d", &a, &b, &l);
if (l <= b) {
printf("%.10lf\n", (ldb)(a < l ? a : l));
return 0;
}
if (l <= a) {
printf("%.10lf\n", (ldb)(b < l ? b : l));
return 0;
}
ldb L = 0, R = acos(-1) / 2;
const ldb eps = 1e-10;
while (L + eps < R) {
ldb ml = (L + L + R) / 3, mr = (L + R + R) / 3;
ldb vl = calc(ml), vr = calc(mr);
if (vl < vr) R = mr;
else L = ml;
}
ldb ans = calc(L);
if (l < ans) ans = l;
if (ans < eps) puts("My poor head =(");
else printf("%.10lf\n", ans);
return 0;
}
CF98C Help Greg the Dwarf 题解的更多相关文章
- 【日常训练】 Help Greg the Dwarf(CodeForces-99E)
题意与分析 题意是这样的,问你把一个长方形从一个L型街道的一端移动到另一端,固定了该长方形的长,求他的最大宽. 这种问题我是第一次独立解决(以前都是抱队友大腿QAQ),现在没法子只好自己硬着头皮做,看 ...
- ACM - 最短路 - CodeForces 295B Greg and Graph
CodeForces 295B Greg and Graph 题解 \(Floyd\) 算法是一种基于动态规划的算法,以此题为例介绍最短路算法中的 \(Floyd\) 算法. 我们考虑给定一个图,要找 ...
- UVa400.Unix ls
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- Codeforces Round #179 (Div. 1) A. Greg and Array 离线区间修改
A. Greg and Array Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/295/pro ...
- Codeforces Gym 100269D Dwarf Tower spfa
Dwarf Tower 题目连接: http://codeforces.com/gym/100269/attachments Description Little Vasya is playing a ...
- Codeforces Gym 100269 Dwarf Tower (最短路)
题目连接: http://codeforces.com/gym/100269/attachments Description Little Vasya is playing a new game na ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- dwarf tower
dwarf tower(dwarf.cpp/c/pas)[问题描述]Vasya在玩一个叫做"Dwarf Tower"的游戏,这个游戏中有n个不同的物品,它们的编号为1到n.现在Va ...
随机推荐
- 《C# in depth》第6章C#6.0中的更改(十四)——表达式体
表达式体成员是一种在C# 6及以上版本中引入的语法.它允许开发人员使用Lambda表达式来简化方法或属性的定义. 在使用表达式体成员时,可以将方法或属性的实现写在一个Lambda表达式中,然后直接返回 ...
- JavaScript中数值小知识
1. 数值10.0 这种类似的会被去掉数值后的0 之所以这样是因为,整数的存储空间占用比浮点数小,当一个数值不是真浮点数(即10.0这种格式),会被转换为整数10,如果业务中有一些需求需要进行数值位数 ...
- 企业实施定制鞋厂ERP软件需要注意哪些问题?
企业实施定制ERP软件是个复杂的管理系统工程,为了成功地为企业定制实施ERP软件,需要注意和解决几个关键的问题: (1) . 确立ERP系统实施和定制的决策者: (2) . 做好前期咨询与调研工作: ...
- 【Oracle】PL/SQL制作唯一标识,固定字段+日期+流水码,流水码每日重置
[Oracle]PL/SQL制作唯一标识,固定字段+日期+流水码,流水码每日重置 首先创建序列 create sequence sequence_name minvalue 0 maxvalue 99 ...
- 【Oracle】Oracle数据库,第N大数据取值
Oracle数据库,第N大数据取值 没想到力扣还有数据库的练习,正好本菜鸡跑过来练手 要显示第二大的数据可以使用order by进行排序,然后用limit对显示的数据进行限制,limit1,1,以此来 ...
- 力扣443(java)-压缩字符串(中等)
题目: 给你一个字符数组 chars ,请使用下述算法压缩: 从一个空字符串 s 开始.对于 chars 中的每组 连续重复字符 : 如果这一组长度为 1 ,则将字符追加到 s 中.否则,需要向 s ...
- 日处理数据量超10亿:友信金服基于Flink构建实时用户画像系统的实践
导读:当今生活节奏日益加快,企业面对不断增加的海量信息,其信息筛选和处理效率低下的困扰与日俱增.由于用户营销不够细化,企业 App 中许多不合时宜或不合偏好的消息推送很大程度上影响了用户体验,甚至引发 ...
- 云原生应用实现规范 - 初识 Operator
简介: 本文我们将首先了解到 Operator 是什么,之后逐步了解到 Operator 的生态建设,Operator 的关键组件及其基本的工作原理,下面让我们来一探究竟吧. 作者 | 匡大虎.阚俊宝 ...
- MaxCompute非事务表如何更新数据
简介: 本文主要讲解如何通过insert overwrite更新数据 背景 对于大数据中的大多数存储格式,支持随机更新非常复杂.它需要扫描大型文件,MaxCompute推出了最新的功能Transact ...
- [GPT] swoole的协程和golang的协程有什么区别,哪个更好
Swoole 的协程和 Golang(Go 语言)的协程(Goroutine)在概念上都是为了实现轻量级的并发编程,但它们在具体实现.使用方式和性能特点上有所不同: 实现原理: Golang 协程(G ...