背景

小杉终于进入了天堂。他看到每个人都带着一双隐形翅膀,他也想要。

(小杉是怎么看到的?……)

描述

天使告诉小杉,每只翅膀都有长度,两只翅膀的长度之比越接近黄金分割比例,就越完美。

现在天使给了小杉N只翅膀,小杉想挑出一对最完美的。

格式

输入格式

每组测试数据的
第一行有一个数N(2<=N<=30000)
第二行有N个不超过1e5的正整数,表示N只翅膀的长度。

20%的数据N<=100

输出格式

对每组测试数据输出两个整数,表示小杉挑选出来的一对翅膀。

注意,比较短的在前,如果有多对翅膀的完美程度一样,请输出最小的一对。

样例1

样例输入1

4
2 3 4 6
Copy

样例输出1

2
3
Copy

限制

每个测试点1s

提示

你可以认为黄金分割比就是0.6180339887498949

来源

lolanv

这题比较神奇

 1 /*
 2     枚举一个数 a[i]
 3     除以黄金比 得到 t=a[i]/gold
 4     找到 与 t相差最小的数
 5 */
 6 #include<cstdio>
 7 #include<iostream>
 8 #include<algorithm>
 9 #define gold 0.6180339887498949
10 #define MAXN 30010
11
12 using namespace std;
13
14 int n,a[MAXN],Lx,Ry;
15
16 double minn=1000000.0;
17
18 inline void read(int&x) {
19     x=0;int f=1;char c=getchar();
20     while(c>'9'||c<'0') {if(c=='-') f=-1;c=getchar();}
21     while(c>='0'&&c<='9') {x=(x<<1)+(x<<3)+c-48;c=getchar();}
22     x=x*f;
23 }
24
25 inline bool cmp(int a,int b) {
26     return a<b;
27 }
28
29 inline double abs(double x) {
30     if(x<0) return -x;
31     return x;
32 }
33
34 int main() {
35     read(n);
36     for(int i=1;i<=n;i++) read(a[i]);
37     sort(a+1,a+1+n,cmp);
38     for(int i=1;i<=n;i++) {
39         if(a[i]==0) continue;
40         double p=a[i]/gold;
41         int l=i,r=n,mid,k;
42         while(l<=r) {
43             mid=(l+r)>>1;
44             if(a[mid]>p) r=mid-1,k=r;
45             else l=mid+1;
46         }
47         if(a[k]==0) continue;
48         double temp=abs((double)a[i]/a[k]-gold);
49         if(temp<minn) {
50             minn=temp;
51             Lx=a[i];
52             Ry=a[k];
53         }
54     }
55     printf("%d\n%d\n",Lx,Ry);
56     return 0;
57 } 

90分代码

上面的方法不知道哪里有问题

只好换一种原理

 1 /*
 2     枚举两个数
 3     计算黄金比
 4     取最优值
 5 */
 6 #include<cstdio>
 7 #include<iostream>
 8 #include<algorithm>
 9 #define gold 0.6180339887498949
10 #define MAXN 30010
11
12 using namespace std;
13
14 int n,a[MAXN],Lx,Ry;
15
16 double minn=1000000.0;
17
18 inline void read(int&x) {
19     x=0;int f=1;char c=getchar();
20     while(c>'9'||c<'0') {if(c=='-') f=-1;c=getchar();}
21     while(c>='0'&&c<='9') {x=(x<<1)+(x<<3)+c-48;c=getchar();}
22     x=x*f;
23 }
24
25 inline bool cmp(int a,int b) {
26     return a<b;
27 }
28
29 inline double abs(double x) {
30     if(x<0) return -x;
31     return x;
32 }
33
34 inline bool judge(int x,int y) {
35     double GOLD=(double)a[x]/(double)a[y];
36     if(GOLD<gold) {
37         if(gold-GOLD<minn) {
38             minn=gold-GOLD;
39             Lx=a[x];
40             Ry=a[y];
41         }
42         return 1;
43     }
44     if(GOLD>gold) {
45         if(GOLD-gold<minn) {
46             minn=GOLD-gold;
47             Lx=a[x];
48             Ry=a[y];
49         }
50         return 0;
51     }
52 }
53
54 int main() {
55     read(n);
56     for(int i=1;i<=n;i++) read(a[i]);
57     sort(a+1,a+1+n,cmp);
58     for(int i=1;i<=n;i++) {
59         if(a[i]==0) continue;
60         double p=a[i]/gold;
61         int l=i,r=n,mid,k;
62         while(l<=r) {
63             mid=(l+r)>>1;
64             if(judge(i,mid)) r=mid-1;
65             else l=mid+1;
66         }
67     }
68     printf("%d\n%d\n",Lx,Ry);
69     return 0;
70 } 

AC代码

vijos 隐形的翅膀相关推荐

  1. vijos||隐形的翅膀

    小杉终于进入了天堂.他看到每个人都带着一双隐形翅膀,他也想要. (小杉是怎么看到的?--) 描述 天使告诉小杉,每只翅膀都有长度,两只翅膀的长度之比越接近黄金分割比例,就越完美. 现在天使给了小杉N只 ...

  2. vijos 1237 隐形的翅膀

    隐形的翅膀 背景 小杉终于进入了天堂.他看到每个人都带着一双隐形翅膀,他也想要. (小杉是怎么看到的?--) 描述 天使告诉小杉,每只翅膀都有长度,两只翅膀的长度之比越接近黄金分割比例,就越完美. 现 ...

  3. 隐形的翅膀 vijos

    隐形的翅膀 背景 小杉终于进入了天堂.他看到每个人都带着一双隐形翅膀,他也想要. (小杉是怎么看到的?--) 描述 天使告诉小杉,每只翅膀都有长度,两只翅膀的长度之比越接近黄金分割比例,就越完美. 现 ...

  4. .NET2.0隐形的翅膀,正则表达式搜魂者【月儿原创】

    .NET2.0隐形的翅膀,正则表达式搜魂者 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/           时间:2007.4.14 本文实现了:只能输入1个数 ...

  5. 视频监控为校园安全插上“隐形的翅膀”

    随着公众社会安全防范意识的提高,安防系统慢慢在各种公共场合普及.而我国教育事业的发展,高校的规模越来越大,学生人数不断增多,校区开放程度和后勤服务社会化程度亦越来越高,学校的管理工作和安全保安工作面临 ...

  6. 知识管理:如何让“隐形的翅膀”飞起来?

    知识管理:如何让"隐形的翅膀"飞起来? 时间:2013-06-07 16:25:46 来源: 中国期刊网 作者:陈新红 知识具有垄断性,但许多企业把知识管理看作员工的额外工作,或寄 ...

  7. 隐形的翅膀怎么用计算机弹出来,《隐形的翅膀》原版吉他谱分享,用音阶指法弹简谱其实很简单 ... ......

    <隐形的翅膀>是张韶涵的一首流行经典老歌,我们很多学吉他的朋友,初学吉他的时候经常会弹唱的一首歌,弹得可能简单版或者是其他版本,这里分享一个原版的吉他伴奏,相对来说要难一点,不过对于弹吉他 ...

  8. 隐形的翅膀怎么用计算机弹出来,《隐形的翅膀》原版吉他谱分享,用音阶指法弹简谱其实很简单 … …-520吉他网...

    时间:2020-05-14     来源:网络资源 <隐形的翅膀>是张韶涵的一首流行经典老歌,我们很多学吉他的朋友,初学吉他的时候经常会弹唱的一首歌,弹得可能简单版或者是其他版本,这里分享 ...

  9. 歌曲:隐形的翅膀 歌手:张韶涵

    歌名:隐形的翅膀 歌手:张韶涵 每一次 都在徘徊孤单中坚强 每一次 就算很受伤也不闪泪光 我知道 我一直有双隐形的翅膀 带我飞 飞过绝望 不去想 他们拥有美丽的太阳 我看见 每天的夕阳也会有变化 我知 ...

最新文章

  1. MyEclipse10中导入的jquery文件报错(出现红叉叉,提示语法错误)
  2. Linux有问必答:如何安装autossh
  3. mysql1231错误_Mysql学习---Python操作Mysql 1231
  4. rem、px、em之间的区别以及网页响应式设计写法
  5. java 复写_课程5.4之函数的复写(override)
  6. Hollis要转行了?
  7. springboot+flowable第三节(动态设置审批人)
  8. 用Dreamweaver+ASP实现分页技术的参考
  9. ArrayBuffer和TypedArray,以及Blob的使用
  10. jqgrid 编辑状态获取该单元格的元素的id 和操作该元素
  11. aliyun gradle 代理_gradle:现代高效的java构建工具
  12. Visio 2019
  13. 工人退休工资偏低,为什么?
  14. 【Java学习笔记】斗地主规则抽牌模拟(利用LinkedList集合及Collections集合工具类实现)
  15. QNAP文件系统不干净,qFinder搜索不到nas,可以ping通
  16. 如何使用Python 绘制惊艳众人的瀑布图
  17. 小米6内存测试软件,小米6采用的是eMMC还是UFS2.1?来测试一下吧
  18. socket网络编程 poll的简单用法
  19. 37岁Android程序员裸辞,四个月被497家公司拒绝,问猎头后懵了
  20. meta20 无法安装 google play_不ROOT不刷机,小米手机如何安装谷歌 GMS 三件套

热门文章

  1. Python raise用法(超级详细,无师自通)
  2. 孤岛惊魂风格哈啥地方噶啥地方嘎斯的发
  3. (XCTest.h file not found)cocoapods引入Specta库之后报XCTest.h文件无法找到
  4. phpMyAdmin使用教程
  5. 511遇见易语言乐玩插件多线程后台绑定-方法2
  6. Android 序列化(Serializable和Parcelable),kotlin开发windows程序
  7. Unity3D shader——水的折射与反射
  8. 在matlab中输入平方
  9. 创维布局大屏AIoT,两款智能电视新品重磅登场
  10. GAN生成动漫头像Pytorch