博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA - 10003 Cutting Sticks
阅读量:4357 次
发布时间:2019-06-07

本文共 858 字,大约阅读时间需要 2 分钟。

题目大意:

一个长为L的棍子,有n个切分点,切割费用=被切割时木棍的长度,求最小的切割费用

分析:

区间$dp$。$dp[i][j]=[i,j]$区间的最小切割费用。状态转移方程$dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+a[j]-a[i]),a[i]$为每个切分点的位置。需要注意的是初始状态$dp[i][i+1]$就已经不能在被分割了所以要重置成$0$,$a[0]=0,a[n+1]=l$表示两个端点。

code:

#define debug#include 
using namespace std;typedef long long ll;const int maxn = 1e7;const int MAXN = 5e3 + 10;const ll INF = 0x3f3f3f3f;const ll inf = 0x7fffff;const ll mod = 1e9 + 7;const int MOD = 10007;int a[maxn];int dp[MAXN][MAXN];void solve() { int l,n; while(~scanf("%d",&l)&&l){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } a[n+1]=l; memset(dp,INF,sizeof(dp)); for(int i=0;i<=n;i++)dp[i][i+1]=0; for(int k=2;k<=n+1;k++){ for(int i=0;i+k<=n+1;i++){ for(int j=i;j
>T; while(T--) solve(); return 0;}

  

转载于:https://www.cnblogs.com/visualVK/p/10525639.html

你可能感兴趣的文章
设计模式02----工厂设计模式(3种)
查看>>
F2工作流引擎模型
查看>>
64:数据流中的中位数
查看>>
常用排序算法之--快速排序
查看>>
php实现设计模式之 简单工厂模式
查看>>
学好Mac常用命令,助力iOS开发
查看>>
asp.net core 通过 TeamCity 实现持续集成笔记
查看>>
定制起始url(scrapy_redis)
查看>>
VS2015 遇到异常。这可能是由某个扩展导致的
查看>>
Tomcat启动时选择加载项目
查看>>
android博客
查看>>
Shell排序——软考(五)
查看>>
jQuery EasyUI API 中文文档 - 搜索框
查看>>
盘古分词,记灵一下
查看>>
PHP投票练习
查看>>
Java事件处理机制- 事件监听器的四种实现方式【转】
查看>>
CSS3伪类选择器:nth-child()
查看>>
POJ2524——Ubiquitous Religions
查看>>
UVA548——Tree(中后序建树+DFS)
查看>>
Hbase配置(伪分布式模式)
查看>>