比赛 20110414pm 评测结果 MMMMMMMMMM
题目名称 气象牛 最终得分 0
用户昵称 kaaala 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-04-14 15:46:37
显示代码纯文本
  1. #include<fstream>
  2. #include<cmath>
  3. #include<cstdlib>
  4. #include<string>
  5.  
  6. using namespace std;
  7.  
  8. long f[1000001][101],a[1000001],n,m;
  9.  
  10. int main()
  11. {
  12. long i,j,k,mn,tmp;
  13. ifstream fin("baric.in");
  14. ofstream fout("baric.out");
  15. fin>>n>>m;
  16. for(i=1;i<=n;i++)
  17. fin>>a[i];
  18. for(i=1;i<=n;i++)
  19. for(j=1;j<=n;j++)
  20. f[i][j]=0x7fffffff;
  21. for(i=1;i<=n;i++)
  22. {
  23. f[i][1]=0;
  24. for(k=1;k<i;k++)
  25. f[i][1]+=2*abs(a[i]-a[k]);
  26. for(k=1;k<i;k++)
  27. {
  28. tmp=0;
  29. for(j=k+1;j<i;j++)
  30. tmp+=abs(2*a[j]-a[k]-a[i]);
  31. for(j=2;j<=k+1;j++)
  32. f[i][j]=min(f[i][j],f[k][j-1]+tmp);
  33. }
  34. }
  35. for(j=1;j<=n;j++)
  36. {
  37. mn=0x7fffffff;
  38. for(i=j;i<=n;i++)
  39. {
  40. tmp=0;
  41. for(k=i+1;k<=n;k++)
  42. tmp+=2*abs(a[k]-a[i]);
  43. mn=min(mn,f[i][j]+tmp);
  44. }
  45. if(mn<=m)
  46. {
  47. fout<<j<<' '<<mn<<endl;
  48. fin.close();
  49. fout.close();
  50. return 0;
  51. }
  52. }
  53. fin.close();
  54. fout.close();
  55. return 0;
  56. }