2017广工新生赛决赛 B 模拟

Posted Roni

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017广工新生赛决赛 B 模拟相关的知识,希望对你有一定的参考价值。

Problem B: 狗哥的肚子

Time Limit: 1 Sec  Memory Limit: 128 MB

Description【http://gdutcode.sinaapp.com/problem.php?cid=1071&pid=1】

在 ACM 集训队中,狗哥的肚子形状多变,令人啧啧称奇,但是大家都有一个疑问,狗哥的肚子在最大的时候,能有多大呢?于是大家通过观察测量,用三种近似形状和相对应的整数数据来描述狗哥的肚子。
但是狗哥的肚子实在太多变化的形状了,大家没有办法找出其中最大的值,于是请求你写一个程序,来计算狗哥的肚子横截面的最大面积。

 

Input

第一行是一个正整数T,代表有T组输入。
每组输入第一行是一个整数 N ,表示狗哥的肚子形状变化个数。
接下来 N 行,每行开头包括一个大写字母,可能是 T (三角形)、 R (矩形) 、 C (圆形) ,表示狗哥肚子横截面的形状。
在字母后,是一到两个整数,表示形状的尺寸,也就是说T后会跟着两个整数,分别代表着三角形的底和高,,R后会跟着两个整数,代表着矩形的两条邻边的长度,而 C 后会跟着一个整数,代表着半径。
保证 N ≤ 1000 ,尺寸都在[0,100]之间,且定义 π = 3.14159。

 

Output

对于每一组样例,输出最大的狗哥的肚子横截面积,结果请保留两位小数。

 

Sample Input

2 1 T 3 2 4 T 3 2 R 2 1 C 5 C 10

Sample Output

3.00 314.16

HINT

 

第二个输入,选择 C 10 ,因为 10 × 10 × 3.14159 = 314.159(保留两位小数) = 314.16 。

【代码】:

技术分享图片
#include <bits/stdc++.h>

using namespace std;
int t,n;
char a[5];
int d,h;
int c,k;
int r;
double s;
double ma=0;
#define PI 3.14159
int main()
{
    scanf("%d",&t);
    while(t--)
    {
        ma=0;//注意内部置位!
        scanf("%d",&n);
        while(n--)
        {
            scanf("%s",a);
            if(a[0]==T)
            {
                scanf("%d%d",&d,&h);
                s=(double)(d*h*1.0/2);
            }
            else if(a[0]==R)
            {
                scanf("%d%d",&c,&k);
                s=(double)(c*k*1.0);
            }
            else
            {
                scanf("%d",&r);
                s=(double)(PI*r*r*1.0);
            }
            ma=max(ma,s);
        }
        printf("%.2f\n",ma);
    }
    return 0;
}
模拟

 

以上是关于2017广工新生赛决赛 B 模拟的主要内容,如果未能解决你的问题,请参考以下文章

广工新生赛-以行走般的速度β

四川大学2021SCUACM新生赛决赛大部分题解(差分dp线段树……)

2016广东工业大学新生杯决赛网络同步赛暨全国新生邀请赛

2016广东工业大学新生杯决赛网络同步赛暨全国新生邀请赛 题解&源码

HDU2017新生赛 友好整数

HDU2017新生赛 找方块