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) 编辑 收藏 举报