Patches
2016-07-08 18:05
218 查看
Patches
题意:轮子上有n个洞,有两种规格的补丁条(无限条),问怎么补使得所用的长度最短
解法:dp
#include <iostream> using namespace std; #include <stdio.h> #include <stdlib.h> #include <cstring> int n, m, t1, t2; int f[3000], a[3000]; int min(int x, int y) { if (x < y) return x; return y; } int main() { while ((scanf("%d %d %d %d", &n, &m, &t1, &t2)) != EOF) { for (int i = 1; i <= n; i++) { cin >> a[i]; int x = i; while (x > 1 && a[x] < a[x-1]) { int temp = a[x]; a[x] = a[x-1]; a[x-1] = temp; x--; } a[n+i] = a[i]+m; } memset(f, 0, sizeof(f)); int ans = 1e9; for (int k = 1; k <= n; k++) { f[k-1] = 0; f[k] = min(t1, t2); for (int i = k+1; i <= k+n-1; i++) { f[i] = f[i-1]+min(t1, t2); for (int j = i-1; j >= k; j--) { if (a[i]-a[j] <= t1) f[i] = min(f[i], f[j-1]+t1); if (a[i]-a[j] <= t2) f[i] = min(f[i], f[j-1]+t2); if (a[i]-a[j] > t1 && a[i]-a[j] > t2) break; } } if (f[k+n-1] < ans) ans 4000 = f[k+n-1]; } cout << ans << endl; } }
相关文章推荐
- objective-C之 NSPredicate(谓词)
- UITableView的内容视图在有无导航栏下的区别
- 微信端真机通过WIFI电脑指南
- 【竞赛之路】(poj 1094) 变量排序
- zepto的clone方法于textarea和select的bug修复
- 纯CSS画的基本图形(矩形、圆形、三角形、多边形、爱心、八卦等)
- 在数据表中增加一列,并为其添加值
- 嵌套类型Array[struct]保存至Hive
- 无限滚动的轮播图
- HttpClient和HttpURLConnection的区别
- 把ubuntu自带的高gcc版本降到低版本(如gcc 3.4)的方法
- OCP052_100_Situations in Which Direct Path Load Is Not Used(译)
- 本地生成图片,xlsx,打包压缩,并删除本地文件夹
- route -A inet6 增加下一跳 提示错误 SIOCADDRT: No route to host
- css3教程:弹性盒模型
- ajax、
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
- document.cookie
- css伪类选择器及其兼容性
- Git使用错误记录