题目地址: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;
}
}
}