【hackerrank week of code 26】Hard Homework
【题目链接】:https://www.hackerrank.com/contests/w26/challenges/hard-homework/problem
【题意】
给你一个式子:sin(x)+sin(y)+sin(z)
这里x,y,z都为正整数;
让你求这个式子的最大值;
【题解】
由和差化积公式;
sin(x)+sin(y)=2∗sin(x+y2)∗cos(x−y2)
这里枚举x+y从2到n-1
x-y不好处理;
但如果我们分步来做;
对于x+y为偶数的情况;
我们每次从x+y推到x+y+2
会发现x-y的值每次会增加两个即|x+y-2|和-|x+y-2|
比如
①
x+y=2
x=1,y=1
则x-y
{0}
②
x+y=4
x=2,y=2 && x=1,y=3
{0}{-2}{2}
③
x+y=6
x=3,y=3 && x=4,y=2 && x= 5,y=1
{0}{2}{4}{-4};
且因为cos(-x)=cos(x)
所以每次x-y只用计算一个x+y-2即可;
然后把cos((x-y)/2)的最大值和最小值都带进去算一下就好了;
【Number Of WA】
WA > 4
【反思】
得到公式了,但对x-y这一点没有处理好;
没能得到x-y随x+y的变化规律.
还是偷懒了吧,没有多试几个x+y变化一下.
好像有试,但是只是试了+1的情况,觉得麻烦了,没往分类那里想。
【完整代码】
#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x)
#define Open() freopen("F:\\rush.txt","r",stdin)
#define Close() ios::sync_with_stdio(0)
typedef pair<int,int> pii;
typedef pair<LL,LL> pll;
const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 110;
int n;
double mi = 1e8,ma = -1e8,ans = -4;
int main(){
//Open();
Close();
cin >> n;
for (int i = 2;i <= n-1;i+=2){
double xsy = i-2;
mi = min(mi,cos(xsy/2.0));
ma = max(ma,cos(xsy/2.0));
ans = max(ans,2*sin(i/2.0)*mi+sin(n-i));
ans = max(ans,2*sin(i/2.0)*ma+sin(n-i));
}
mi = 1e8,ma = -1e8;
for (int i = 3;i <= n-1;i+=2){
double xsy = i-2;
mi = min(mi,cos(xsy/2.0));
ma = max(ma,cos(xsy/2.0));
ans = max(ans,2*sin(i/2.0)*mi+sin(n-i));
ans = max(ans,2*sin(i/2.0)*ma+sin(n-i));
}
cout << fixed << setprecision(9) << ans << endl;
return 0;
}
【hackerrank week of code 26】Hard Homework的更多相关文章
- 【HackerRank Week of Code 31】Colliding Circles
https://www.hackerrank.com/contests/w31/challenges/colliding-circles/problem 设E(n)为序列长度为n时的期望值. \[ \ ...
- 【枚举约数】HackerRank - Week of Code 26 - Satisfactory Pairs
题意:给你一个正整数n,问你存在多少个正整数对a,b(a<b),满足条件:存在正整数x,y,使得ax+by=n. 就预处理出n以内所有数的约数,然后暴力枚举a,暴力枚举x,然后枚举n-ax的所有 ...
- HackerRank Week of Code 26
好像这次week of code不是很难= = A int main(){ int n; int m; cin >> n >> m; cout<<(n+)/*)/) ...
- 6392. 【NOIP2019模拟2019.10.26】僵尸
题目描述 题解 吼题但题解怎么这么迷 考虑一种和题解不同的做法(理解) 先把僵尸离散化,h相同的钦(ying)点一个大小 (可以发现这样每种情况只会被算正好一次) 计算完全被占领的方案,然后1-方案/ ...
- 6389. 【NOIP2019模拟2019.10.26】小w学图论
题目描述 题解 之前做过一次 假设图建好了,设g[i]表示i->j(i<j)的个数 那么ans=∏(n-g[i]),因为连出去的必定会构成一个完全图,颜色互不相同 从n~1染色,点i的方案 ...
- 【EF Code First】 一对一、一对多的多重关系配置
这里使用相册Album和图片Picture的关系做示例 1,Album与Picture最基本的关系是1-n(一个相册可以有多张图片) 这时Album.Picture实体类可以这么定义 /// < ...
- 【EF Code First】 一对多、多对多的多重关系配置
这里使用用户表(User)和项目(Project)表做示例 有这样一个需求: 用户与项目的关系是:一个用户可以发多个项目,可以参加多个项目,而项目可以有多个参与成员和一个发布者 [其中含1-n和n-n ...
- 【26】Remove Duplicates from Sorted Array
[26]Remove Duplicates from Sorted Array Given a sorted array, remove the duplicates in place such th ...
- JZOJ 5602.【NOI2018模拟3.26】Cti
JZOJ 5602.[NOI2018模拟3.26]Cti Description 有一个 \(n×m\) 的地图,地图上的每一个位置可以是空地,炮塔或是敌人.你需要操纵炮塔消灭敌人. 对于每个炮塔都有 ...
随机推荐
- 浅谈optparse 解析命令行参数库
使用的背景 在工作中我们经常要制定运行脚本的一些参数,因为有些东西是随着我么需求要改变的,所以在为们写程序的时候就一定不能把写死,这样我们就要设置参数 在python中我们可以通过sys 模板的arg ...
- VUE使用中踩过的坑
前言 vue如今可谓是一匹黑马,github star数已居第一位!前端开发对于vue的使用已经越来越多,它的优点就不做介绍了,本篇是我对vue使用过程中以及对一些社区朋友提问我的问题中做的一些总结, ...
- selenium+xpath获取href的坑
先上HTML文档 <html> <body> <a href="http://www.example.com">Example</a> ...
- git pull 跟 fetch的区别
今天在公司碰到个问题,公司不使用master分支作为主分支,而使用release分支作为主分支,这就碰到了个问题,也就是当clone一个项目下来的时候,如果master跟release分支有冲突,就不 ...
- Linux下MySql数据库常用操作
1.显示数据库 show databases; 2.选择数据库 use 数据库名; 3.显示数据库中的表 show tables; 4.显示数据表的结构 describe 表名; 5.显示表中记录 S ...
- ubuntu 14.04服务器上使用nginx搭建wordpress博客详解
过程详解 1.更新apt-get sudo apt-get update 2.安装nginx sudo apt-get install nginx 3.启动nginx sudo service ngi ...
- JDK1.7中的ThreadPoolExecutor源代码剖析
JDK1. 7中的ThreadPoolExecutor 线程池,顾名思义一个线程的池子,池子里存放了非常多能够复用的线程,假设不用线程池相似的容器,每当我们须要创建新的线程时都须要去new Threa ...
- VC6.0VB6.0 Scratch等软件
VC6.0VB6.0 Scratch等软件 http://pan.baidu.com/s/1nv4hJrb
- 零基础学python-5.2 数字表达式操作符
表达式是处理数字最主要的工具 a=1#常量 a=a+1#表达式 操作符 操作符 描写叙述 yield 生成 器函数发送协议 lambda args:expression 生成匿名函数 x if y e ...
- Android This Activity already has an action bar supplied by the window decor
This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ ...