[洛谷 P3788] 幽幽子吃西瓜
妖梦费了好大的劲为幽幽子准备了一个大西瓜,甚至和兔子铃仙打了一架。现在妖梦闲来无事,就蹲在一旁看幽幽子吃西瓜。西瓜可以看作一个标准的球体,瓜皮是绿色的,瓜瓤是红色的,瓜皮的厚度可视为0。妖梦恰好以正视的角度看着这个西瓜。幽幽子是一个吃货,妖梦一走神,自己背后的刀就不见了,而西瓜也被切掉了一块。幽幽子切西瓜时刀面始终垂直于桌面,并且切下的一块在俯视图中正好是一个以西瓜中心为顶点,半径为西瓜半径的扇形。如图所示,是一种满足条件的情况
俯视:
正视:
妖梦看着红红绿绿的西瓜,忽然陷入思考,红色的西瓜瓤占整个西瓜可视面积的百分之多少呢?但她对几何一窍不通,于是想问问幽幽子,但幽幽子正抱着切下来的西瓜大吃特吃,没有理会妖梦。于是她想让你来帮她解决这个问题。
为了方便描述问题,我们为俯视图建立一个平面极坐标系,极点在俯视图圆形(扇形)的正中央,极轴方向竖直向下。极轴所对应的角度为0度,角度逆时针依次增加,直到转一圈又回到极轴。因此角度范围是[0,360)。幽幽子会切掉西瓜从a°到b°的这一整块。
输入输出格式
输入格式:
第一行一个整数T,表示数据组数。
接下来T行每行两个整数a,b。表示切掉范围的起始角度和终止角度。若a>b,则切掉的角度为[a,360)∪[0,b]这一范围。
输出格式:
T行,每行一个实数后跟一个百分号“%”,表示被切掉一部分的西瓜的正视图(平行投影)中,红色的西瓜瓤占西瓜总可视面积的百分比。在此题中,妖梦的视野方向平行于俯视图的极轴,并且极轴射线指向妖梦。
输出的实数四舍五入保留一位小数,你的答案被判作正确,当且仅当与标准答案完全相同。
输入输出样例
2 90 270 315 45
0.0% 70.7%
说明
样例说明:
第一个样例中,切掉的西瓜恰好在背面,在妖梦的角度看起来与未切过的西瓜并无区别,因此输出0%。第二个样例中,切掉了从315°~45°这一部分,经过计算,得到答案为sqrt(2)/2,化成小数得到0.707,即70.7%
本题目共有10个测试点。
对于第1个测试点,a,b∈{0,90,180,270}。
对于第2个测试点,270<=a<=359,0<=b<=90。
对于第3,4个测试点,180<=a<=359,0<=b<=179。
对于全部测试点,0<=a,b<=359,a≠b。
1<=T<=10000
PS:本题实在太玄。。。
首先,要看懂题目的意思,题目就是说给你一个西瓜,给出俯视图,并在俯视图上向瓜心方向切2刀,每一刀的距离都是瓜的半径。要你求出,在正视图中,红色的面积是正视图
面积的多少。
出题者很友善地给出了部分特殊情况,那我们一起来分析下:
10%:
由于a,b∈{0,90,180,270},我们可以全用来特判;
20%(10%+10%):
由于270<=a<=359,0<=b<=90,说明正视图的总面积是π*r*r。那么,我们只需求出红色的总面积,具体见下;
40%(10%+10%+20%):
这种情况就开始比较复杂了,可以自己推一下;
100%:
本蒟蒻仍然将每种情况都推了一遍。。。唯一要注意的是,一定要把目光放在留下来的西瓜上面,见下。
另外的:注意cmath里的sin什么的都是弧度,我们要把角度转成弧度再用,弧度=π*角度/180°。
代码如下:
#include<cmath> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const double pi=3.14159265358980; inline int read(){ ; char ch=getchar(); ') ch=getchar(); +ch-',ch=getchar(); return x; } double chg(int x){ ; } void situ1(int d1,int d2){ ||d2==){ ){) puts("50.0%"); else puts("0.0%");} ) puts("50.0%"); else puts("0.0%");} }else ||d2==){ ) puts("0.0%"); else puts("100.0%"); }else ||d2==){ ) puts("0.0%"); else puts("100.0%"); } } void situ2(int d1,int d2){ -d1),ret=sin(del); del=chg(d2),ret+=sin(del),ret*=/; printf("%.1f%c\n",ret,'%'); } void situ3(int d1,int d2){ &&d2>=) puts("100.0%"); else{ -abs(-d1)),ret=,tot=; ) ret=sin(del); ) tot=; else tot=ret; del=chg(-abs(-d2)),ret+=sin(del); ) tot+=; else tot+=sin(del); ret=ret/tot*; printf("%.1f%c\n",ret,'%'); } } void situelse(int d1,int d2){ ,ret=,tot=; if (d1<d2){ <=d1&&d1<){ -d1<=d2-) puts("0.0%"); else{ ) del=chg(d2),ret=sin(del),tot++; ) del=chg(-d2),tot=ret=sin(del); del=chg(d1),ret-=sin(del),tot++; ret=ret/tot*; printf("%.1f%c\n",ret,'%'); } }else <=d1&&d1<) puts("0.0%"); else <=d1&&d1<){ -d1>=d2-) puts("0.0%"); else{ del=chg(d1-),tot=ret=sin(del),tot++; del=chg(-d2),ret-=sin(del); ret=ret/tot*; printf("%.1f%c\n",ret,'%'); } }else <=d1&&d1<){ del=chg(-d1),ret=sin(del),tot=; del=chg(-d2),ret-=sin(del); ret=ret/tot*; printf("%.1f%c\n",ret,'%'); } }else{ <d1&&d1<=){ del=chg(d1),tot=sin(del); del=chg(d2),ret=sin(del); ret=ret/tot*; printf("%.1f%c\n",ret,'%'); }else <d1&&d1<=){ ) puts("100.0%"); else{ tot=; del=chg(d2),ret=sin(del); ret=ret/tot*; printf("%.1f%c\n",ret,'%'); } }else <d1&&d1<=){ del=chg(d1-),ret=sin(del),tot++; <=d2) ret=tot=; <d2&&d2<) del=chg(d2),ret+=sin(del),tot++; ret=ret/tot*; printf("%.1f%c\n",ret,'%'); }else <d1&&d1<){ del=chg(-d1),ret=sin(del),tot++; <d2) del=chg(-d2),tot=sin(del); <=d2&&d2<) del=chg(-d2),ret+=sin(del),tot+=sin(del); <d2&&d2<) del=chg(d2),ret+=sin(del),tot++; ret=ret/tot*; printf("%.1f%c\n",ret,'%'); } } } inline void _solve(){ int dg_s=read(),dg_t=read(); ==&&dg_t%==) situ1(dg_s,dg_t); else <=dg_s&&dg_s<&&<=dg_t&&dg_t<=) situ2(dg_s,dg_t); else <=dg_s&&dg_s<&&<=dg_t&&dg_t<) situ3(dg_s,dg_t); else situelse(dg_s,dg_t); } int main(){ for (int T=read(); T; T--) _solve(); ; }
[洛谷 P3788] 幽幽子吃西瓜的更多相关文章
- 洛谷P1508 Likecloud-吃、吃、吃
题目背景 问世间,青春期为何物? 答曰:“甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!” 题目描述 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一直处在饥饿的状态中.某日上课,正当他饿得头昏 ...
- 洛谷 P1508 Likecloud-吃、吃、吃
P1508 Likecloud-吃.吃.吃 题目提供者JosephZheng 标签 动态规划 难度 普及/提高- 题目背景 问世间,青春期为何物? 答曰:"甲亢,甲亢,再甲亢:挨饿,挨饿,再 ...
- 洛谷1508 Likecloud-吃、吃、吃
题目背景 问世间,青春期为何物? 答曰:“甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!” 题目描述 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一直处在饥饿的状态中.某日上课,正当他饿得头昏 ...
- 洛谷 P2431 正妹吃月饼 解题报告
P2431 正妹吃月饼 题目描述 今天是中秋节.\(uim\)带来了一堆大小不同且味道各异的月饼. 这些月饼的质量分别是\(1g\),\(2g\),\(4g\),\(8g\),\(16g\)....后 ...
- 洛谷——1508 Likecloud-吃、吃、吃
题目背景 问世间,青春期为何物? 答曰:“甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!” 题目描述 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一直处在饥饿的状态中.某日上课,正当他饿得头昏 ...
- 洛谷——P1508 Likecloud-吃、吃、吃
P1508 Likecloud-吃.吃.吃 题目背景 问世间,青春期为何物? 答曰:“甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!” 题目描述 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一 ...
- 洛谷 - P3786 - 萃香抱西瓜 - 状压dp
重构一下就过了,不知道之前错在哪里. #include<bits/stdc++.h> using namespace std; typedef unsigned long long ull ...
- 洛谷 P3131 [USACO16JAN]子共七Subsequences Summing to Sevens
P3131 [USACO16JAN]子共七Subsequences Summing to Sevens 题目描述 Farmer John's NN cows are standing in a row ...
- 洛谷 P1508 Likecloud-吃、吃、吃 题解
P1508 Likecloud-吃.吃.吃 题目背景 问世间,青春期为何物? 答曰:"甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!" 题目描述 正处在某一特定时期之中的李大水牛由于消化 ...
随机推荐
- URL helper 逆向破解思路+详细过程 利用messagebox破解
先了解一下软件的运行: 打开后是这样的,要注册 随便输入假注册码,看他怎么响应: 会弹出一个信息窗(massageBox)提示注册失败.到这里就行了,关掉,然后用OD打开,按F9跑起来: 这里输入假码 ...
- Android Studio 使用USB真机调试教程
允许安装未知来源的软件 允许USB调试 设置启动方式 选择USB device 然后运行 会自动安装软件启动! 参考: https://blog.csdn.net/fubo1990/article/d ...
- HTTP是什么连接
① 在HTTP/1.0中,默认使用的是短连接. 但从 HTTP/1.1起,默认使用长连接,用以保持连接特性. ②http长连接并不是一直保持连接 http的长连接也不会是永久保持连接,它有一个保持时间 ...
- 设计模式(六)Prototype Pattern 原型模式
通过new产生一个对象非常繁琐,可以使用原型模式 原型模式实现: ——Cloneable接口和clone方法 ——Prototype模式实现起来最困难的地方是实现内存的复制和操作,Java中提供了cl ...
- SpringMVC获取页面表单参数的几种方式
以下几种方式只有在已搭好的SpringMVC环境中,才能执行成功! 首先,写一个登陆页面和一个Bean类 <%@ page language="java" co ...
- Windows下pipenv将虚环境文件的位置设置在项目根目录下
在windows下使用pipenv shell时,虚拟环境文件夹会在C:\Users\Administrator\.virtualenvs\目录下默认创建,为了方便管理,将这个虚环境的文件的位置更改一 ...
- python中文件的读和写操作
一.打开文件 data = open("yesterday",encoding="utf-8").read() # python默认的打字符编码是unicode ...
- Go语言学习之4 递归&闭包&数组切片&map&锁
主要内容: 1. 内置函数.递归函数.闭包2. 数组与切片3. map数据结构4. package介绍 5. 排序相关 1. 内置函数.递归函数.闭包 1)内置函数 (1). close:主要用来关闭 ...
- Aria2 研究(研究资料来自互联网)
# AriaNg https://github.com/mayswind/AriaNg/releases/tag/1.0.0 http://ariang.mayswind.net/zh_Hans/ # ...
- 教你一招 - 如何安装nopcommerce2.5
教你一招 - 如何安装nopcommerce2.5 29. 五月 2012 16:22 / wcf / 教你一招 . 解决方案 ...