HDU2010省赛集训队选拔赛(校内赛) G

lazy gege

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 948    Accepted Submission(s): 361

Problem Description

Gege hasn‘t tidied his desk for long,now his desk is full of things.

This morning Gege bought a notebook,while to find somewhise to put it troubles him.

He wants to tidy a small area of the desk, leaving an empty area, and put the notebook there, the notebook shouldn‘t fall off the desk when putting there.

The desk is a square and the notebook is a rectangle, area of the desk may be smaller than the notebook.

here‘re two possible conditions:

Can you tell Gege the smallest area he must tidy to put his notebook?

Input

T(T<=100) in the first line is the case number.

The next T lines each has 3 real numbers, L,A,B(0< L,A,B <= 1000).

L is the side length of the square desk.

A,B is length and width of the rectangle notebook.

Output

For each case, output a real number with 4 decimal(printf("%.4lf",ans) is OK), indicating the smallest area Gege should tidy.

Sample Input

3
10.1 20 10
3.0 20 10
30.5 20.4 19.6

Sample Output

25.0000
9.0000
96.0400

Author

madfrog

Source

HDU2010省赛集训队选拔赛(校内赛)

题意: 求一个矩形放在正方形的桌子上,不掉落,所覆盖的最小面积

题解: 要使矩形不掉落,只需矩形的重心在桌子上即可,然后要求覆盖的最小面积,则分类讨论下就行了. (很容易想的)具体看代码吧!

AC代码:

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <cmath>
#define eps 1e-8

using namespace std;
const int MAXN = 1e3 + 100;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int>P;

int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        double d,a,b,ans;
        scanf("%lf %lf %lf",&d,&a,&b);
        if(a > b) swap(a,b);
        double mid = sqrt((double)2) / 2 * d;
        if(mid + eps >= a / 2) ans = a * a / 4.0;
        else if(mid * 2 < a / 2 + eps) ans = d * d;
        else
        {
            double r = mid * 2.0 - a / 2;
            ans = d * d - r * r;
        }
        printf("%.4lf\n",ans);
    }
    return 0;
}
时间: 2024-10-11 20:56:05

HDU2010省赛集训队选拔赛(校内赛) G的相关文章

HDU2010省赛集训队选拔赛(校内赛) H

#define is unsafe Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 287    Accepted Submission(s): 178 Problem Description Have you used #define in C/C++ code like the code below? #include <stdio

CSU-ACM2014年校队选拔赛指导赛解题报告

•Problem A  CSU 1065                               贪心 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 const int maxn = 1000010; 6 struct Node{ 7 int a,b; 8 bool operator < (const Node& rhs)

2018 蓝桥杯省赛 B 组模拟赛(一)

2018 蓝桥杯省赛 B 组模拟赛(一) A.今天蒜头君带着花椰妹和朋友们一起聚会,当朋友们问起年龄的时候,蒜头君打了一个哑谜(毕竟年龄是女孩子的隐私)说:“我的年龄是花椰妹年龄个位数和十位数之和的二倍”. 花椰妹看大家一脸懵逼,就知道大家也不知道蒜头君的年龄,便连忙补充道:“我的年龄是蒜头君个位数和十位数之和的三倍”. 请你计算:蒜头君和花椰妹年龄一共有多少种可能情况? 提醒:两位的年龄都是在 [10,100)[10,100) 这个区间内. 题解: 暴力枚举 answer: 1 代码如下: #

2019西北工业大学程序设计创新实践基地春季选拔赛(重现赛)-G(DP)

题目链接:https://ac.nowcoder.com/acm/contest/553/G 题意:给定n,k,(1<=n<=5e5)然后给出n个数ai(1<=ai<=1e5),问按顺序从1..n分组,最多能有多少个组的异或和为k. 思路:自然的,我们用dp[i]表示到第i个人的时候最多有多少个组的异或和为k.计算dp[i]时,有两种情况,要么在第i个人后面分出一组,要么不分.不分的话dp[i]=dp[i-1]就可以了; 如果分得话,就要找到上一个组的终点下标,我们可以计算到第i个

2019 年「计算机科学与工程学院」新生赛 暨ACM集训队选拔赛 # 1

T1 请问这还是纸牌游戏吗 https://scut.online/p/567 这道题正解据说是方根 这里先放着等以后填坑吧qwq 但是由于这道题数据是随机的 所以其实是有各种水法的(但是我比赛根本没有想到任何水法qwq 第一种水法呢 因为数据随机 所以当数据大小变得比较大的时候 基本乘出来的数已经能覆盖1到P-1了 所以我们直接输出1和P-1就可以了 而数据比较小的时候就可以暴力计算了qwq include<cstdio> #include<cstring> #include&l

2015年省赛组队选拔赛3

Fast Typing 概率DP 求期望,期望一般要逆推dp[i]代表已经正确打完前i个字符并且正确打完剩下的所有字母的期望,so dp[n] = 0,我们要求dp[0],题目让我们求最小,最小是因为他可以打不定字母再 去检测,具体多少不知道,对于dp[i],枚举j代表打了j个字母然后去检查,在枚举k,代表敲的j个字母,第k个是错误的,so对于不同的j,设敲了几个字母再去检查的期望为bj, 则dp[i] = min(b[j]), 其中bj = t+time // t是检查的时间,time是写这j

2015年省赛组队选拔赛2

Arc and Point(待补) 几何 Block Toy 神奇的状态压缩DP,在uva上已ac,只给出代码,具体的找本人 http://acm.hust.edu.cn/vjudge/problem/viewSource.action?id=3516028 by fd Kick the ball! 概率题,数据量小,DP搜索都可以,搜索的话深度10,递归当前罚球的是进球还是不进球,复杂度2^10,每次判断是否有必要再比下去,没有必要或者结束,并且比分是要求的答案加上概率 http://acm.

HUST_ACdream区域赛指导赛之手速赛系列(1)(2)G——BFS——Cutting Figure

Description You've gotten an n × m sheet of squared paper. Some of its squares are painted. Let's mark the set of all painted squares as A. Set A is connected. Your task is to find the minimum number of squares that we can delete from set A to make i

hdu 1754 I Hate It(树状数组区间求最值)2007省赛集训队练习赛(6)_linle专场

题意: 输入一行数字,查询第i个数到第j个数之间的最大值.可以修改其中的某个数的值. 输入: 包含多组输入数据. 每组输入首行两个整数n,m.表示共有n个数,m次操作. 接下来一行包含n个整数. 接下来m行,每行包含一个字母s,两个整数a,b. 当s为’Q’,表示查询第a个数到第b个数之间的最大值. 当s为’U’,表示将第a个数更改为b. 输出: 每次查询输出一个结果,每次输出占一行. 题解: 点修改区间求最值,可以用树状数组模板. 具体见代码—— 1 #include <cstdio> 2