记录编号 80985 评测结果 AAAAAAAAAA
题目名称 [IOI 2002] 任务安排 最终得分 100
用户昵称 GravatarLauncher 是否通过 通过
代码语言 C++ 运行时间 0.040 s
提交时间 2013-11-08 08:31:32 内存使用 3.26 MiB
显示代码纯文本
  1. #include<iostream>
  2. #include<cstdio>
  3. using namespace std;
  4. int n,m;
  5. int a[5002]={0},t[5002]={0};
  6. int T[5002]={0};
  7. int f[5002]={0};
  8. int sf[5002]={0};
  9. int st[5002]={0};
  10. int main()
  11. {
  12. freopen("batch.in","r",stdin);
  13. freopen("batch.out","w",stdout);
  14. int i,j,k,l,s,p;
  15. cin>>n;
  16. cin>>s;
  17. for (i=1;i<=n;i++)
  18. {
  19. cin>>T[i]>>a[i];
  20. sf[i]=sf[i-1]+a[i];
  21. st[i]=st[i-1]+T[i];
  22. }
  23. f[1]=(s+T[1])*a[1];
  24. t[1]=s+T[1];
  25. for (i=2;i<=n;i++)
  26. {
  27. f[i]=f[i-1]+(t[i-1]+T[i]+s)*a[i];
  28. t[i]=t[i-1]+T[i]+s;
  29. for (j=i-2;j>=0;j--)
  30. {
  31. p=sf[n]-sf[j];
  32. if (f[i]+(sf[n]-sf[i])*t[i]>=f[j]+p*(t[j]+st[i]-st[j]+s))
  33. {
  34. f[i]=f[j]+(sf[i]-sf[j])*(t[j]+st[i]-st[j]+s);
  35. t[i]=t[j]+(st[i]-st[j])+s;
  36. }
  37. }
  38. }
  39. //for (i=1;i<=n;i++)
  40. // cout<<f[i]<<' '<<t[i]<<endl;
  41. cout<<f[n]<<endl;
  42. return 0;
  43. }