codeforces 957C Three-level Laser【二分】
2018-03-25 20:19
260 查看
题目大意:给你一个n个数的递增的序列,从中找到 Ei ,Ej ,Ek 其中i<j<ki<j<k 使得 Ek−EjEk−EiEk−EjEk−Ei最大,并且 Ek-Ei<=u 数据范围 n<1e5 Ei<1e9 u<1e9
分析:通过观察可知,当i,j最接近时,并且距离k越远越大,我们可以知道 j=i+1 ,因此只要确定了i 就可以确定j,那么我们就可以枚举每个i 然后二分找到K值即可
4000
分析:通过观察可知,当i,j最接近时,并且距离k越远越大,我们可以知道 j=i+1 ,因此只要确定了i 就可以确定j,那么我们就可以枚举每个i 然后二分找到K值即可
#include <bits/stdc++.h> using namespace std; int n,u; const int maxn=1e5+40; const int inf=0x3f3f3f3f; const int mod=1e9+7; typedef long long ll; int a[maxn]; int main() { scanf("%d%d",&n,&u); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } double ans=0; for(int i=1;i<=n-2;i++) { int x=a[i]; int y=a[i+1]; int k=upper_bound(a+1,a+1+n,x+u)-(a+1); //cout<<k<<endl; int t=a[k]; //cout<<t<<endl; ans=max(ans, 1.0*(t-y)/(t-x)*1.0); } if(ans==0)printf("-1\n"); else printf("%.9lf",ans); return 0; }
4000
相关文章推荐
- VK Cup 2018 Round 2: B. Three-level Laser(二分)
- CodeForces - 924B Three-level Laser (二分搜索)
- Codeforces-600B Queries about less or equal elements(二分)
- Codeforces 706B Interesting drink 【二分】
- Codeforces 551C GukiZ hates Boxes(二分)
- 【打CF,学算法——四星级】CodeForces 514D R2D2 and Droid Army (RMQ+二分)
- Codeforces 360B + Codeforces 689C ( 二分 + DP )
- Codeforces 471C MUH and House of Cards【找规律+二分】
- CodeForces 165B - Burning Midnight Oil(二分)
- Codeforces 474B Worms 二分(水
- CodeForces 613 B.Skills(二分)
- Codeforces 671B Robin Hood (二分搜索)
- CodeForces 448D - Multiplication Table(二分)
- codeforces 655C C. Enduring Exodus(二分)
- CodeForces 68B Energy exchange (二分查找)
- Codeforces 460C Present 二分+前缀和
- CodeForces 631E Product Sum(斜率优化DP+二分|三分) ★
- Codeforces 653D Delivery Bears【二分+网络流】
- CodeForces - 165B Burning Midnight Oil ——二分
- CodeForces 689C Mike and Chocolate Thieves (二分+数论)