51nod 1272 最大距离 -暴力
2017-12-19 08:40
232 查看
链接:1272
直接在>=all[i]的全部元素中暴力查找p[i]的对应最大距离,然后再枚举i,这里i<n-ans,否则无法找到比当前更大的ans。中间过程进行适当的优化直接就过了。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
int all[50050];
pii p[50050];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>all[i];
p[i].first=all[i];
p[i].second=i;
}
sort(p,p+n);
int ans=0;
for(int i=0;i+ans<n;i++){
int j=lower_bound(p+i+1,p+n,pii(all[i],i))-p;
if(j==n)continue;
while(j<n){
if(p[j].second-i>=ans)ans=p[j].second-i;
j++;
}
}
cout<<ans;
}
直接在>=all[i]的全部元素中暴力查找p[i]的对应最大距离,然后再枚举i,这里i<n-ans,否则无法找到比当前更大的ans。中间过程进行适当的优化直接就过了。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
int all[50050];
pii p[50050];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>all[i];
p[i].first=all[i];
p[i].second=i;
}
sort(p,p+n);
int ans=0;
for(int i=0;i+ans<n;i++){
int j=lower_bound(p+i+1,p+n,pii(all[i],i))-p;
if(j==n)continue;
while(j<n){
if(p[j].second-i>=ans)ans=p[j].second-i;
j++;
}
}
cout<<ans;
}
相关文章推荐
- 51NOD 1272 最大距离(线段树)
- 51nod 1272 最大距离 (单调栈)
- 51Nod 1272 最大距离
- 51nod 1272 最大距离 思维题
- 51nod 1272 最大距离
- 51nod 1272 最大距离(贪心)
- 51nod 1272 最大距离(思维)
- 51nod 1272 最大距离(贪心)
- 51nod 1272 最大距离 By Assassin
- 树状数组求不带修改前缀最值问题 51NOD 1272 最大距离
- 51NOD 1272 最大距离
- 51Nod-1272-最大距离
- 51Nod 1272 最大距离 (排序,维护下标)
- 51nod 1272 最大距离
- 51nod 1272 最大距离【思维】
- 51nod 1272 最大距离 (贪心或单调栈)
- 51nod 1272 最大距离 O(nlog(n)) , 快排 , 最大连续子串
- 51nod 1158 全是1的最大子矩阵 (暴力枚举)
- 51 nod 1272 最大距离(树状数组)
- 51nodoj 1272 最大距离(最大循环节)