搜狗算法工程师编程题(求圆上的距离) 状态:已更新

#include<algorithm>
#include<string>
#include<stdlib.h>
#include<map>
#include<vector>
#include<memory.h>
#include<set>
#include<stdio.h>
#define EPS 1e-9
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
double a[1000000];
int flagg=-1;
for(int i=0;i<n;i++){
scanf("%lf",&a[i]);//a[i];
if(a[i]-180.0>0){
if(flagg==-1)
flagg=i;
}
}
if(flagg==-1){
printf("%0.8lf\n",a[n-1]-a[0]);
}
else {
double anss=a[n-1]-a[flagg];
if(a[flagg-1]-a[0]>anss) anss=a[flagg-1]-a[0];
for(int i=0;i<flagg;i++){
int k=lower_bound(a,a+n,180.0+a[i])-a;
if(k<n){
if(a[k]-a[i]<180){
if(anss<a[k]-a[i]) anss=a[k]-a[i];
k++;
if(k<n)
if(anss<360-a[k]+a[i]) anss=360-a[k]+a[i];
}
if(a[k]-a[i]>180){
if(anss<360-a[k]+a[i]) anss=360-a[k]+a[i];
k--;
if(k>=0){
if(anss<a[k]-a[i]) anss=a[k]-a[i];
}
}
if(a[k]-a[i]==180.0){
anss=180.00;
break;
}
}
}
printf("%0.8lf\n",anss);
}
}
全部评论
思路:二分搜索 如果超时的话检查几部分 1数组好像要开到1000000 2算法复杂度大
点赞 回复 分享
发布于 2017-09-08 18:12
#include<iostream> #include<cmath> #include<algorithm> #include<vector> using namespace std; int main() { int n; cin >> n; vector<double> a(n); cin >> a[0]; bool flag = 0; double du = a[0] + 180; int index; for (int i = 1; i < n; i++) { scanf("%lf", &a[i]); //cin >> a[i]; 这里只能通过60% if (flag) continue; if (a[i] > du) { flag = 1; index = i; } } if (flag == 0) { printf("%.8f", a[n - 1] - a[0]); return 0; } double res = a[index-1] - a[0]; int j = index; for (int i = 0; i < index; i++) { if (j == n - 1) { double tmp = a[j] - a[i]; if (tmp > 180) tmp = 360 - tmp; res = max(res, tmp); } else { double tmp = a[j] - a[i], tr = tmp; while (tmp <= 180 && j<n - 1) { tr = tmp; j++; tmp = a[j] - a[i]; } if(tmp>180) tmp = 360 - tmp; if (tr > 180) tr = 360 - tr; tr = max(tr, tmp); if (tr > res) res = tr; } } res = max(res, a[n - 1] - a[index]); printf("%.8f", res); return 0; } 复杂度O(n)
点赞 回复 分享
发布于 2017-09-08 18:11
java 一直超时,奇怪,有用java写的嘛?
点赞 回复 分享
发布于 2017-09-08 18:09
用cin就超时,这也太坑人了
点赞 回复 分享
发布于 2017-09-08 18:06
马克
点赞 回复 分享
发布于 2017-09-08 17:48
贴个
点赞 回复 分享
发布于 2017-09-08 17:46

相关推荐

评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务