时间限制:0.25s

空间限制:4M

题意:

   在n(n<=10000)个球中,给若干个球涂色,每个球涂色的代价为Ci,使得任意连续m(m<=100)个球中有至少两个球被涂了色.


Solution:

 首先很直接地能想到一个DP的状态转移方程

f[i][j] 代表,当前涂第i个球,且前面最近一个被涂色的球为j的最小代价

f[i][j]=min(f[j][k])+Ci,   k>i+1-m

分析这个转移方程的时间复杂度是O(n*m*m)在此题的数据范围中高达10^8

显然我们需要更好的解法

分析上面的方程发现,在计算min(f[j][k])时,是有重复计算的部分的,

于是想办法减少这个重复的过程。

对于 一个 j,i的范围在 (j+1,j+m-1)

对应k的范围 是(i+1-m+1)~(j-1)

如果我们让i从(j+m-1)倒推至(j+1)

就可以让k从(j-1)变成(i+1-m+1)

min(f[j][k])需要计算的范围就会依次变大,而且可以递推求出

即可以在O(1)的时间里求出min(f[j][k])

总的时间复杂度就变成了O(n*m)

再发现空间上不能直接用n*m的数组,加上滚动数组优化就行了

code

#include <iostream>
#include <cstring>
using namespace std;
const int mod = 101;
int n, m;
int c[10009];
//f[i][j]涂当前第i个球,和第i,第j个球的最小代价
//只保留最近的200个;
int f[200][200];
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) cin >> c[i];
memset (f, 0x3f, sizeof f);
f[1][0]=c[1];
for (int i = 1; i <= m; i++)
for (int j = 1; j < i; j++)
f[i][j] = c[i] + c[j];
for (int j = 2; j < n; j++) {
int tem = 0x3f3f3f3f;
for (int i = j + m - 1; i > j; i--) {
if(i<=m) break;
tem = min (tem, f[j%mod][(i - m)%mod]);
f[i%mod][j%mod] = tem + c[i];
}
}
int ans = 0x7fffffff;
for (int i = n - m + 1; i <= n; i++)
for (int j = i - 1; i - j < m && n - j < m; j--)
ans = min (ans, f[i % mod][j % mod]);
cout << ans;
return 0;
}

  

最新文章

  1. .NET平台和C#编程的总结
  2. WPF 自定义DateControl DateTime控件
  3. 入手了[云梯的VPN]--水文
  4. linux 汇编
  5. 摘录ECMAScript官方文档中重要的两段话
  6. wpf 报错: 在 AddNew 或 EditItem 事务过程中不允许“DeferRefresh”。
  7. HTTP图解
  8. Gym 100703K Word order 贪心
  9. 20160805_CentOS6_控制台切换
  10. windows Phone 浏览器窗口的尺寸
  11. pssh 不能执行指定用户命令
  12. 给js function的参数设置默认值
  13. iOS 10 使用相机及相簿闪退的问题修正
  14. SQL数据库开发知识总结:提高篇
  15. 关于jquery文件上传插件 uploadify 3.1的使用
  16. poj1611
  17. 《设计模式之禅》--设计模式大PK
  18. 数据分析 大数据之路 六 matplotlib 绘图工具
  19. 【任务】Python语言程序设计.MOOC学习
  20. cookie小栗子-实现简单的身份验证

热门文章

  1. Android protectionLevel
  2. Linux学习笔记4——函数调用栈空间的分配与释放
  3. Hibernate(八)一对多单向关联映射
  4. HDOJ/HDU 1250 Hat&#39;s Fibonacci(大数~斐波拉契)
  5. [转]让程序在崩溃时体面的退出之Unhandled Exception
  6. 把mysql 中的字符gb2312 改为gbk的方法
  7. 《A First Course in Probability》-chaper4-离散型随机变量-随机变量和或积的期望
  8. openstack kilo版本控制节点异常流量分析
  9. Palindrome - URAL - 1297(求回文串)
  10. Leo 搭积木