A. Srdce and Triangle--“今日头条杯”首届湖北省大学程序设计竞赛(网络同步赛)
如下图这是“今日头条杯”首届湖北省大学程序设计竞赛的第一题,作为赛后补题
题目描述:链接点此
这套题的github地址(里面包含了数据,题解,现场排名):点此

Let be a regualr triangle, and D is a point in the triangle. Given the angle of
. Then let AD, CD and BD form a new triangle, what is the size of the three angles?
输入描述:
Input contains multiple cases, please process to the end of input.
For each line in the input, contains three integers, $\alpha, \beta, \gamma$, which are the size of the angel ,
and
in degree.
输出描述:
For each line of input, output one line with three numbers in ascending order, the three angles in the new triangle, your answer will be considered as correct if and only if the relative or absolute error is less than
, If the new triangle cannot be formed, output -1 -1 -1 instead.
题目解析:就是一个等边三角形,然后在等边三角形内有一点D,已知 ,
and
,求以AD,BD,CD为边构成的三角形的内角。
现场列了三个方程:

但是很难受,解方程解了3个小时,并没有算出来(可能是我数学太弱了),后来想二分,二分角DAB,但是现场wa了,回头补上来,
现在说一种十分简单的方法:
这是不是一个代数题,是一道解题目,我们把三角形ABC逆时针旋转60度,如下图:

就会出现以abc为边构成的三角形PP'C,由于ΔAPP'是等边三角形,所以可以求出三个角分别为 ,
and
减去60度,这是个水题啊。(ORZ,卡了4个小时)
/*
data:2018.04.22
author:gsw
link:https://www.nowcoder.com/acm/contest/104#question
tip:武大校赛--补题
*/
#define IO ios::sync_with_stdio(false);
#define ll long long #include<iostream>
#include<string.h>
#include<math.h>
#include<stdio.h>
#include<vector>
#include<algorithm> using namespace std; int main()
{
int a,b,c;
while(~scanf("%d%d%d",&a,&b,&c))
{
int ans[];
ans[]=a-;
ans[]=b-;
ans[]=c-;
sort(ans,ans+);
printf("%d %d %d\n",ans[],ans[],ans[]);
}
}
下面会有二分的做法:
对角DAB进行二分,我试了好几次,把所有的优化都做了,要把esp调到1e-12才可以过
然后注意几点优化:把所有的变量定义放在外面,这个优化挺重要的。
/*
data:2018.04.22
author:gsw
link:https://www.nowcoder.com/acm/contest/104#question
tip:武大校赛--补题
*/
#define IO ios::sync_with_stdio(false);
#define ll long long #include<iostream>
#include<string.h>
#include<math.h>
#include<stdio.h>
#include<vector>
#include<algorithm>
int a,b,c;
using namespace std; const double expp=1e-;
const double pi=3.14159265358;
const double g3=sqrt()/;
double cosc,x,y,ad,cd,bd,cos_c,th1,th2,mid,ans[];
inline bool judge(double th1)
{
th2=-a-th1;
th1=th1/*pi;th2=th2/*pi;
th1=tan(th1);th2=tan(th2);
x=th2/(th2+th1);
y=x*th1;
//cout<<"x= "<<x<<" "<<y<<endl;
ad=x*x+y*y;
cd=(x-0.5)*(x-0.5)+(y-g3)*(y-g3);
cos_c=(ad+cd-)/(*sqrt(ad*cd));
//cout<<cos_c<<" "<<cosc<<endl;
if(cos_c>cosc)return ;
else return ;
}
inline double ef(double l,double r)
{
while(r-l>expp)
{
mid=(l+r)/;
if(judge(mid))l=mid;
else r=mid;
//cout<<l<<" "<<r<<endl;
}
return l;
}
int main()
{
//freopen("temin.txt","r",stdin);
//freopen("temout.txt","w",stdout); while(~scanf("%d%d%d",&a,&b,&c))
{
cosc=cos((double)c/*pi);
th1=ef(,min(-a,));
th2=-a-th1;
th1=th1/*pi;th2=th2/*pi;
th1=tan(th1);th2=tan(th2);
x=th2/(th2+th1);
y=x*th1;//th2*th1/(th2+th1);
//cout<<x<<" "<<y<<endl;
ad=x*x+y*y;
cd=(x-0.5)*(x-0.5)+(y-g3)*(y-g3);
bd=(x-)*(x-)+y*y;
//cout<<ad<<" "<<cd<<" "<<bd<<endl;
ans[]=acos((ad+cd-bd)/(*sqrt(ad*cd)))/pi*;
ans[]=acos((ad+bd-cd)/(*sqrt(ad*bd)))/pi*;
ans[]=acos((bd+cd-ad)/(*sqrt(bd*cd)))/pi*;
sort(ans,ans+);
printf("%f %f %f\n",ans[],ans[],ans[]);
}
}

再此跟新::

这个优化还是不到位啊,有时t,有时A。时间总是差个几毫秒
A. Srdce and Triangle--“今日头条杯”首届湖北省大学程序设计竞赛(网络同步赛)的更多相关文章
- “今日头条杯”首届湖北省大学程序设计竞赛--F. Flower Road
题目链接:点这 github链接:(包含数据和代码,题解):点这 链接:https://www.nowcoder.com/acm/contest/104/E来源:牛客网 题目描述 (受限于评测机,此题 ...
- “今日头条杯”首届湖北省大学程序设计竞赛(网络同步赛 )--E. DoveCCL and Resistance
题目描述:链接点此 这套题的github地址(里面包含了数据,题解,现场排名):点此 链接:https://www.nowcoder.com/acm/contest/104/D来源:牛客网 题目描述 ...
- I. Five Day Couple--“今日头条杯”首届湖北省大学程序设计竞赛(网络同步赛)
题目描述:链接点此 这套题的github地址(里面包含了数据,题解,现场排名):点此 链接:https://www.nowcoder.com/acm/contest/104/H来源:牛客网 题目描述 ...
- D. Who killed Cock Robin--“今日头条杯”首届湖北省大学程序设计竞赛(网络同步赛)
题目描述:链接点此 这套题的github地址(里面包含了数据,题解,现场排名):点此 题目描述 由于系统限制,C题无法在此评测,此题为现场赛的D题 Who killed Cock Robin? I, ...
- H. GSS and Simple Math Problem--“今日头条杯”首届湖北省大学程序设计竞赛(网络同步赛)
题目描述:链接点此 这套题的github地址(里面包含了数据,题解,现场排名):点此 题目描述 Given n positive integers , your task is to calculat ...
- “东信杯”广西大学第一届程序设计竞赛(同步赛)H
链接:https://ac.nowcoder.com/acm/contest/283/H来源:牛客网 题目描述 由于临近广西大学建校90周年校庆,西大开始了喜闻乐见的校园修缮工程! 然后问题出现了,西 ...
- 2019年广东工业大学腾讯杯新生程序设计竞赛(同步赛)E-缺席的神官
链接:https://ac.nowcoder.com/acm/contest/3036/E 来源:牛客网 题目描述 面前的巨汉,让我想起了多年前的那次,但这个巨汉身上散布着让人畏惧害怕的黑雾.即使看不 ...
- Minieye杯第十五届华中科技大学程序设计邀请赛现场同步赛 I Matrix Again
Minieye杯第十五届华中科技大学程序设计邀请赛现场同步赛 I Matrix Again https://ac.nowcoder.com/acm/contest/700/I 时间限制:C/C++ 1 ...
- 2018今日头条杯 E-Jump a Jump
Problem E. Jump A JumpInput file: standard inputOutput file: standard outputTime limit: 1 secondsMemor ...
随机推荐
- SAS 读取数据文件
每次读取数据时需要告诉SAS3件事:1:数据存在哪里?2:数据的形式3:创建的数据集的类型(永久/临时) 1 读取SAS数据集 DATA temp; /*temp 为创建的数据集名称*/ INFILE ...
- 小程序 页面传值 json 被截断
因此解决这个报错的方法是将要传输的数据用 encodeURIComponent()函数(可把字符串作为 URI 组件进行编码) 先进行编码, 传输过去后再通过decodeURIComponent()函 ...
- 2.Prometheus安装部署
环境准备 2台Linux操作系统(基于centos7) docker环境 配置 IP 角色 版本 192.168.229.139 prometheus-server 2.10 192.168.229. ...
- python学习笔记:接口开发——flask Demo实例
举例1,返回当前时间接口 ''' 初始化:所有的Flask都必须创建程序实例, web服务器使用wsgi协议,把客户端所有的请求都转发给这个程序实例 程序实例是Flask的对象,一般情况下用如下方法实 ...
- java 重新学习 (一)
一 垃圾回收特点 1.垃圾回收的工作目标是回收物对象的内存空间,这些内存空间都是jvm堆内存里的空间,垃圾回收器值回收内存资源,对他的物理资源:数据库连接,磁盘I/O等资源则无能为力 2.更快进行垃圾 ...
- 【Java】 java判断字符串是否为空的方法总结
以下是java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s));方法二: ...
- ReentrantReadWriteLock的相关使用
ReentrantLock具有完全互斥排他的效果,同一时间只有一个线程执行ReentrantLock.lock()方法后面的任务,这样虽然能够保证线程安全性,但是效率是比较低的 ReentrantRe ...
- vue组件库的基本开发步骤
市面上目前已有各种各样的UI组件库,比如 Element 和 iView,他们的强大毋庸置疑.但是我们面临的情况是需求越来越复杂,当它们不能再满足我们需求的时候,这个时候就有必要开发一套属于自己团队的 ...
- 记录java ftp下载图片只有96KB的问题
public InputStream downloadFile(String path) { if(StringUtils.isBlank(path)) { return null; } connne ...
- svn - Subversion 命令行客户端工具
SYNOPSIS 总览 svn command [options] [args] OVERVIEW 概述 Subversion 是一个版本控制系统,允许保存旧版本的文件和目录 (通常是源代码),保存一 ...