洛谷[P4889] KLS与FLAG

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

#include<bits/stdc++.h>
using namespace std;
long long a,b,c[200002],d[400002],e=0,i,j,k,l;
int main(){
    ios::sync_with_stdio(false);
    cin>>a>>b;            //O(NlogN),放心用cin
    for(i=1;i<=a;i++){
        cin>>c[i];e+=2;      
        d[e-1]=i-c[i];d[e]=i+c[i];   //入数组
    }
    sort(d+1,d+e+1);         //排序
    for(i=1;i<=2*a;i++){  
        if(d[i]!=d[i-1])       //如果不在这个点了
            k=0;
        else k++,l+=k;         //如果在,就加一下
    }
    cout<<l;                 //输出最后答案
}

 

posted @ 2018-10-23 17:43  Viston  阅读(112)  评论(0)    收藏  举报