codeforce gym/100495/problem/K—Wolf and sheep 两圆求相交面积 与 gym/100495/problem/E—Simple sequence思路简述
之前几乎没写过什么这种几何的计算题。在众多大佬的博客下终于记起来了当时的公式。嘚赶快补计算几何和概率论的坑了。。。
这题的要求,在对两圆相交的板子略做修改后,很容易实现。这里直接给出代码。重点的部分有:两圆在相离(或外交)时输出第一个圆的面积、内涵(或内切)则需要分类讨论,是羊的圈大、还是狼的圈大。以下是代码:
#include<iostream>
#include<cmath>
#include<stdio.h>
using namespace std;
int main()
{
double a,b,c,d,e,f,jiao1,jiao2,s1,s2,s3,s4,l,py;
int t,s,j;
py=2*acos(0);
//cout<<py<<endl;
j=1;
cin>>t;
while(t--)
{
cin>>a>>b>>c;
cin>>d>>e>>f;
l=sqrt((d-a)*(d-a)+(e-b)*(e-b));//l是两圆的圆心距
if(l<=fabs(c-f))//如果内涵(切)
{
if(c>f)
{
cout<<"Case #"<<j++<<": ";
printf("%.11lf",py*(c*c-f*f));
cout<<endl;
}
else cout<<"Case #"<<j++<<": "<<"0"<<endl;
continue;
}
else if(l>=c+f)//如果相离(外切)
{
cout<<"Case #"<<j++<<": ";
printf("%.11lf",py*c*c);
cout<<endl;
continue;
}
//以下为一般的相交情况
jiao1=acos((l*l+c*c-f*f)/(2*l*c));//余弦定理求出第一个圆对应圆心角的一半
jiao2=acos((l*l+f*f-c*c)/(2*l*f));//同理求第二个圆
s1=jiao1*c*c;//第一个圆对应的扇形
s2=jiao2*f*f;//第二个圆对应扇形
s3=c*c*sin(jiao1)*cos(jiao1);//第一个圆心角对应的三角形
s4=f*f*sin(jiao2)*cos(jiao2);//第二个圆心角对应的三角形
cout<<"Case #"<<j++<<": ";
printf("%.11lf",py*c*c-(s1+s2-s3-s4));//输出第一个圆的面积减去公共部分面积
cout<<endl;
//cout<<s1+s2-s3-s4<<endl;
//在这里, s1+s2-s3-s4是圆的公共部分面积
}
}
圆心角对应的三角形可能会比较难理解,但只要画一个一般情况的图出来,模拟一边求解过程,就能更好的理解了。
写的时候,我还因为没讨论内切情况而WA2 ,感觉几何的情况要比其他题目的多得多啊。。
然后在这简述一下gym/100495/problem/E—Simple sequence的思路,这题也同样出现在了新生赛里。这题可以用类似尺取法的方式暴力。用两个元素l、r来标记当前段的前后位置,满足条件则尾部往后移动、不满足时就把头往后移动。在把头往后移动之前,需要讨论当前段的头是不是该区间的最大值或者最小追,若答案为是,则需要在移动后的区域里找到最大或最小值。这个暴力方法十分精妙,时间非常的逼近O(n)。很适合作为理解尺取法和区间取数的例题。
代码本来想打的。。但是刚要测试数据的时候Dev卡死了,然后就没了QAQ
codeforce gym/100495/problem/K—Wolf and sheep 两圆求相交面积 与 gym/100495/problem/E—Simple sequence思路简述的更多相关文章
- hdu5858 Hard problem(求两圆相交面积)
题目传送门 Hard problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- Gym 100952J&&2015 HIAST Collegiate Programming Contest J. Polygons Intersection【计算几何求解两个凸多边形的相交面积板子题】
J. Polygons Intersection time limit per test:2 seconds memory limit per test:64 megabytes input:stan ...
- Codeforces Gym 100610 Problem K. Kitchen Robot 状压DP
Problem K. Kitchen Robot Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/10061 ...
- Gym 101981K - Kangaroo Puzzle - [玄学][2018-2019 ACM-ICPC Asia Nanjing Regional Contest Problem K]
题目链接:http://codeforces.com/gym/101981/problem/K Your friend has made a computer video game called “K ...
- 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem K. KMC Attacks 交互题 暴力
Problem K. KMC Attacks 题目连接: http://codeforces.com/gym/100714 Description Warrant VI is a remote pla ...
- Codeforces 1089K - King Kog's Reception - [线段树][2018-2019 ICPC, NEERC, Northern Eurasia Finals Problem K]
题目链接:https://codeforces.com/contest/1089/problem/K time limit per test: 2 seconds memory limit per t ...
- Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem K. UTF-8 Decoder 模拟题
Problem K. UTF-8 Decoder 题目连接: http://opentrains.snarknews.info/~ejudge/team.cgi?SID=c75360ed7f2c702 ...
- XVII Open Cup named after E.V. Pankratiev Grand Prix of Moscow Workshops, Sunday, April 23, 2017 Problem K. Piecemaking
题目:Problem K. PiecemakingInput file: standard inputOutput file: standard outputTime limit: 1 secondM ...
- 2018 Multi-University Training Contest 4 Problem K. Expression in Memories 【模拟】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6342 Problem K. Expression in Memories Time Limit: 200 ...
随机推荐
- hive 限制本地内存使用量
hive.mapred.local.mem Mapper/Reducer 在本地模式的最大内存量,以字节为单位,0为不限制. hive-default.xml <property> < ...
- docker 打卡
create 2019/01/01 mod 2019/02/02 安装没得技术含量,看过菜鸟教程和纯洁写的博客,感觉so easy 命令: yum install docker 启动 设置开机启动 s ...
- python语法_变量及命名规则
变量:存储信息的,日后被调用,修改操作 常量:固定不变的量,字母大写 变量命名规则: 1 有字母,数字以及下划线等符号组成 2 区分大小写 3 不能使用数字开头,不能含有特殊字符和空格 4 不能使用 ...
- phpspider php爬虫框架
其实我自身的不是经常写正则,而且不规则的html去写正则本身就是件很麻烦的事情,如果页面有些微变动和更新就得再次去维护正则表达式,其实是非常蛋疼的 我第一感觉就是去找一下爬虫的库,但是发现现在php爬 ...
- Java图片合并
/** * 纵向合并图片,ossObject.getObjectContent()返回InputStream对象 */ private BufferedImage mergeImage(List< ...
- MVCC&PURGE&分布式事务
Ⅰ.MVCC介绍 consistent non-locking read,通过行多版本控制的方式读取当前执行时间点的记录 默认情况下innodb select没有任何锁,读到的记录在更新就通过undo ...
- odoo配置文件内容详解
odoo常用openerp-server.conf配置参数详解 参数 说明 用法 addons_path addons模块的查找路径,多个路径用逗号分隔 addons_path = E:\GreenO ...
- SQL 查询嵌套使用
.查询: 各年级中 分数最高的学习信息 示例表如下: create table it_student( id int primary key auto_increment, -- 主键id ...
- Python_tkinter(1)_窗口创建与布局
环境:Python 3.7.2 1. 窗口基本创建(窗口标题.窗口大小) import tkinter from tkinter import * # 初始化Tk() root = Tk() # 设置 ...
- 数据格式XML、JSON详解
一. XML数据格式 1.1 XML的定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类 ...