【题解】失落的成绩单(2020.2.21)(数学+二分)

题解

这一天老师要查第m个同学的成绩,为了不挨批-),MC努力回想,想起成绩单上的一个规律:

若把成绩看作是一个实数数列,则Ai=((Ai-1)-(Ai+1))/2+d,(就是每一项为其前后两项之差除以二再加d)。此时,我告诉了MC一共N项的数列首项A1和末项An,以及d。剩下的靠你了!

变形:Ai = Ai-2 - 2 ( Ai-1 - d )
方法很多,最简单的是对第二项二分,发现第二项越大,后面的偶数项越大,奇数项越小,这就具有单调性,可以二分答案

#include<cstdio> const double eps = 1e-12; double d,a[65],An; int n,m; bool check() { for(int i=3;i<=n;i++) a[i]=a[i-2]-2*(a[i-1]-d); return a[n]>=An; } int main(){ scanf("%d%d%lf%lf%lf",&n,&m,&d,&a[1],&An); double l=-1e12,r=1e12; while(r-l>eps) { a[2]=(l+r)/2; if(n%2) { if(check()) l=a[2]; else r=a[2]; } else { if(check()) r=a[2]; else l=a[2]; } } printf("%.3lf",a[m]); return 0; }

这就是计算思维,我们计算一个东西可以从很多方面入手,复杂度和难易程度都是不一样的!还有就是如何避免重复计算,提高效率


__EOF__

本文作者仰望星空的蚂蚁
本文链接https://www.cnblogs.com/cqbzly/p/17530426.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   仰望星空的蚂蚁  阅读(4)  评论(0编辑  收藏  举报  
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示