首页 > 其他 > 详细

洛谷P4889kls与flag

时间:2018-10-14 11:05:22      阅读:138      评论:0      收藏:0      [点我收藏+]

 

第一思路暴搜30

 1 int n,m,h[300000],ans;
 2 int main()
 3 {
 4     int i,j;
 5     cin>>n>>m;
 6     for(i=1;i<=n;i++)
 7       cin>>h[i];
 8     for(i=1;i<=n-1;i++)
 9       for(j=i+1;j<=n;j++)
10         if(h[i]+h[j]==j-i||h[i]-h[j]==j-i||h[j]-h[i]==j-i)
11            ans++;
12     cout<<ans<<endl;
13     return 0;
14 }

O(N^2)70超时

思路优化

运用了不用map的方法
即把每个杆子可能落到的位置存进数组
运用sort排序一遍
O(N)扫一遍即可

#include<bits/stdc++.h>
using namespace std;
long long p[400004];
int main()
{
    long long n,m,h,i,j,e=0,t=0,ans=0;
    cin>>n>>m;
    for(i=1;i<=n;i++)
    {
        cin>>h;
        e+=2;
        p[e-1]=i-h;
        p[e]=i+h;
    }
    sort(p+1,p+e+1);
    for(i=1;i<=2*n;i++)
        if(p[i]!=p[i-1])
          t=0;
         else{
            t++;
            ans+=t;
         } 
    cout<<ans<<endl;
    return 0;
} 

AC万岁!

洛谷P4889kls与flag

原文:https://www.cnblogs.com/xuanxixiaohei/p/9785394.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!