codeforces#236_div2_B Trees in a Row

题目地址:cf#236_div2_B

直接枚举,应该用哪一个高度作为最终序列中不变的那个量。

统计每个数有多少是不用改变高度的。

wa了很多次,,因为没有考虑到树的高度必须为正数。

代码:

#include<iostream>
typedef long long inta;

using namespace std;

inta  p[10000];

inta  cnt[10000];

int  main()
{
    inta  n,k;
    cin>>n>>k;
    
    for(inta  i=0;i<n;i++)
        cin>>p[i];
    
    for(inta  i=0;i<n;i++)
    {
        cnt[i]=0;
        for(inta  j=0;j<n;j++)
        {
            if(p[j]-p[i]==k*(j-i))  cnt[i]++;
                
        }
        
    }
    

    
    inta  maxi=1;
    inta  index=0;
    
    for(inta  i=0;i<n;i++)
    {
      if(cnt[i]>maxi&&p[i]>k*i)
      {
          maxi=cnt[i];
          index=i;
          
      }
    }
    
 
    cout<<n-maxi<<endl;
    
    
    for(inta  i=0;i<n;i++)
    {
       if(p[i]-p[index]<k*(i-index))
       {
           cout<<"+ "<<i+1<<" "<<p[index]+k*(i-index)-p[i]<<endl;
       }
        
        else if(p[i]-p[index]>k*(i-index))
        {
            
           cout<<"- "<<i+1<<" "<<p[i]-p[index]-k*(i-index)<<endl;
        }
       
    }
}


posted on 2014-03-17 02:29  814jingqi的ACM  阅读(122)  评论(0编辑  收藏  举报