F
e
l
i
c
i
a
导航
C++博客
首页
新随笔
联系
聚合
管理
<
2007年9月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
统计
随笔 - 149
文章 - 0
评论 - 315
引用 - 0
公告
访问量
定制我的博客魔方
Yodao提供
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(21)
给我留言
查看公开留言
查看私人留言
随笔分类
(145)
ACM/ICPC 纪事(13)
(rss)
Felicia 的标程(3)
(rss)
TopCoder SRM(5)
(rss)
动态规划(28)
(rss)
计算几何(52)
(rss)
图论(6)
(rss)
心情日记(33)
(rss)
杂题(5)
(rss)
随笔档案
(149)
2010年10月 (5)
2009年1月 (2)
2008年2月 (2)
2008年1月 (8)
2007年12月 (6)
2007年11月 (5)
2007年10月 (30)
2007年9月 (47)
2007年8月 (44)
相册
百度之星2007
女友Ader
校园风景
ACMers
barnabas
Codger
ecjtubaowp
Felicia's New Blog
Flyfox
Hailer
Liang
LittleKid
Nash635
Owen
Richardxx
[推荐]不可不看的超级牛的网站
updog
wywcgs
海狸鼠DLUT
农夫三拳
潘帕斯雄鹰
踏雪赤兔
巫山霏云
星丞
Pretty Girls
Ader
最新随笔
1. [导入]论函数调用约定(修订版)
2. [导入]CodeColorer的可视化插入代码
3. [导入]Gravatar头像被墙的解决方法
4. [导入]Win7下解决80端口被占用的办法
5. [导入]C# 泛型+扩展方法
6. <天龙八部Online>资源包Axp格式研究
7. 如何加载《天龙八部》Skeleton
8. 我已更换新的blog http://gccfeli.cn 此blog的文章已全部转移
9. 今天自己做果冻吃
10. 非常喜欢珞珈山水离版画面的一首诗
搜索
最新评论
1. re: [动态规划]pku1038
@Run&Run
里面的两处>?=是什么意思
--prister
2. re: USACO历年比赛题目列表,测试数据和解题报告下载[未登录]
已经打不开了
--lee
3. re: WF的T-shirt颜色选什么好呢?
我还是喜欢 gekius的t-shirt多些 gekius.com
--banyumalu
4. re: [动态规划]pku3375
求数据
--77
5. re: [动态规划]pku1141
你的这个代码提交WA了
--wwq
阅读排行榜
1. USACO历年比赛题目列表,测试数据和解题报告下载(27187)
2. [动态规划]pku 部分动态规划题目列表(6567)
3. [计算几何]两圆求交点(5822)
4. [动态规划]动态规划总结 by Amber(3946)
5. [计算几何]pku 部分计算几何题目列表(3182)
评论排行榜
1. 友情链接邀请(42)
2. USACO历年比赛题目列表,测试数据和解题报告下载(38)
3. 2007南京赛区总结 by mmd(19)
4. [动态规划]pku2411(12)
5. [计算几何]pku 部分计算几何题目列表(12)
[动态规划]pku1160
先预处理,把第i个村子到第j个村子中,建一个邮局的最小代价算出来,存在min_cost[i][j]里。
接下来就可以DP。设f[i][j]为前i个邮局,建在前j个村子的最小代价。那么f[i][j]可以转移到f[i + 1][j + k],(1 <= k 且 j + k <= n),代价是min_cost[j + 1][j + k]。
/**/
/*
************************************************************************
Author: WHU_GCC
Created Time: 2007-9-3 22:18:48
File Name: pku1160.cpp
Description:
***********************************************************************
*/
#include
<
iostream
>
using
namespace
std;
#define
out(x) (cout << #x << ": " << x << endl)
const
int
maxint
=
0x7FFFFFFF
;
typedef
long
long
int64;
const
int64 maxint64
=
0x7FFFFFFFFFFFFFFFLL;
template
<
class
T
>
void
show(T a,
int
n)
{
for
(
int
i
=
0
; i
<
n;
++
i) cout
<<
a[i]
<<
'
'
; cout
<<
endl; }
template
<
class
T
>
void
show(T a,
int
r,
int
l)
{
for
(
int
i
=
0
; i
<
r;
++
i) show(a[i], l); cout
<<
endl; }
const
int
maxn
=
310
;
int
n, p;
int
min_cost[maxn][maxn];
int
f[maxn][maxn];
int
a[maxn];
int
main()
{
scanf(
"
%d%d
"
,
&
n,
&
p);
for
(
int
i
=
1
; i
<=
n; i
++
)
scanf(
"
%d
"
,
&
a[i]);
for
(
int
i
=
1
; i
<=
n; i
++
)
for
(
int
j
=
i; j
<=
n; j
++
)
{
min_cost[i][j]
=
0
;
int
mid
=
(i
+
j)
/
2
;
for
(
int
k
=
i; k
<=
mid; k
++
)
min_cost[i][j]
+=
a[mid]
-
a[k];
for
(
int
k
=
mid
+
1
; k
<=
j; k
++
)
min_cost[i][j]
+=
a[k]
-
a[mid];
}
for
(
int
i
=
0
; i
<=
p; i
++
)
for
(
int
j
=
0
; j
<=
n; j
++
)
f[i][j]
=
maxint;
f[
0
][
0
]
=
0
;
for
(
int
i
=
0
; i
<=
p; i
++
)
for
(
int
j
=
0
; j
<=
n; j
++
)
if
(f[i][j]
<
maxint)
{
for
(
int
k
=
1
; j
+
k
<=
n; k
++
)
f[i
+
1
][j
+
k]
<?=
f[i][j]
+
min_cost[j
+
1
][j
+
k];
}
printf(
"
%d\n
"
, f[p][n]);
return
0
;
}
posted on 2007-09-03 22:44
Felicia
阅读(1495)
评论(3)
编辑
收藏
引用
所属分类:
动态规划
Comments
#
re: [动态规划]pku1160
压子
Posted @ 2007-09-07 11:59
谢谢
回复
更多评论
#
re: [动态规划]pku1160
ecnu_zp
Posted @ 2008-07-11 22:43
学习大牛..
^_^
回复
更多评论
#
re: [动态规划]pku1160
林志聪
Posted @ 2009-04-27 23:08
我想要的是算法、思想,不是代码~~
回复
更多评论
刷新评论列表
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
[动态规划]O(n^2 / logn)的LCS
[动态规划] pku1458 最长公共子序列
[动态规划]pku1080
[动态规划]pku1338
[动态规划]pku3420
[动态规划]pku1191
[动态规划]pku1179
[动态规划]pku1189
[动态规划]pku1185
[动态规划]pku1163
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理