yzhw@ujs code my life~
江苏大学
pku1205 Water Treatment Plants 递推(说DP也可以把。。)
题意:
一个污水处理系统吗,n个城市,每个城市可以选择
1、将左边城市过来的污水和右边城市过来的污水连同本身的污水排到河里
2、将左边来的污水连同自己的污水排到右边
3、将右边来的污水连同自己的污水排到左边
解法:
设状态dp[i][0]为第i个城市选择将污水传到左边的方案数,dp[i][1]为第i个城市选择将污水排入河道的方案数,dp[i][2]为选择将污水排到右边城市的方案数
然后有递推式
dp[i][2]=dp[i][1]=sum(dp[i-1][j]),j=0,1,2
dp[i][0]=dp[i-1][0]+dp[i-1][1]
这个应该不难理解吧?
如果最后一个城市选择后两种方案,那么前面城市怎么连都无所谓
而最后一个城市选择第一个方案,那么第n-1个城市不能选择将污水排到第n个城市
注意初始条件,dp[1][0]=0,dp[1][1]=dp[1][2]=1;
然后就是java BigInteger ,嘻嘻
1
import
java.io.
*
;
2
import
java.math.
*
;
3
public
class
Main
{
4
5
/** */
/**
6
*
@param
args
7
*/
8
public
static
void
main(String[] args)
throws
IOException
{
9
StreamTokenizer in
=
new
StreamTokenizer(
new
BufferedReader(
new
InputStreamReader(System.in)));
10
BigInteger dp[][]
=
new
BigInteger[
101
][
3
];
11
dp[
1
][
0
]
=
BigInteger.ZERO;
12
dp[
1
][
1
]
=
BigInteger.ONE;
13
dp[
1
][
2
]
=
BigInteger.ONE;
14
for
(
int
i
=
2
;i
<=
100
;i
++
)
15
{
16
dp[i][
1
]
=
dp[i
-
1
][
0
].add(dp[i
-
1
][
1
].add(dp[i
-
1
][
2
]));
17
dp[i][
0
]
=
dp[i
-
1
][
0
].add(dp[i
-
1
][
1
]);
18
dp[i][
2
]
=
dp[i
-
1
][
0
].add(dp[i
-
1
][
1
].add(dp[i
-
1
][
2
]));
19
}
20
while
(in.nextToken()
!=
in.TT_EOF)
21
System.out.println(dp[(
int
)in.nval][
0
].add(dp[(
int
)in.nval][
1
]));
22
}
23
24
25
26
}
27
posted on 2011-01-15 17:22
yzhw
阅读(200)
评论(0)
编辑
收藏
引用
所属分类:
DP
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
pku3903 最长递增字串的单调性优化
pku 3998 Land Division DP斜率优化
The 36th ACM/ICPC Asia Regional Dalian Online Contest 大连2011ICPC网络赛 个人题解
pku3124 The Bookcase 扩展背包好题
pku1202 Family DAG图上的概率DP
pku 1946 Cow Cycling 非常好的DP
pku1948 Triangular Pastures DP+枚举。海伦公式
pku1335 Digital Onion 递归
pku1332 Finding Liars DP 经典好题
pku1337 A Lazy Worker 很诡异的DP
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © yzhw
<
2011年1月
>
日
一
二
三
四
五
六
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
31
1
2
3
4
5
导航
首页
新随笔
联系
管理
统计
随笔 - 183
文章 - 2
评论 - 27
引用 - 0
公告
统计系统
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
(227)
combination math(7)
(rss)
data struct(48)
(rss)
DP(46)
(rss)
geometry&phycise(13)
(rss)
graph(47)
(rss)
numberic(8)
(rss)
others(5)
(rss)
search(23)
(rss)
simple problem~(15)
(rss)
string algorithm(11)
(rss)
ujs acm training(4)
(rss)
文章分类
(2)
combination math
(rss)
data struct
(rss)
DP
(rss)
graph theory(1)
(rss)
numberic
(rss)
others(1)
(rss)
search
(rss)
OJ
lunzi
whu fatboy_cw
yzu大牛
最新随笔
1. pku3908 并查集的一点小变通
2. pku3907 求多边形面积
3. pku3905 2-SAT问题 &我对2-SAT问题的最新理解
4. pku3904 容斥原理的运用,好题!
5. pku3903 最长递增字串的单调性优化
6. pku 3943 Digits on the Floor 并查集的活用(重点)+数字识别
7. pku 3998 Land Division DP斜率优化
8. HDU 3682 To Be an Dream Architect 容斥原理
9. 2010 天津赛区G hdu 3726 splay
10. 2010 ICPC天津赛区 J hdu 3727 划分树的理解
搜索
积分与排名
积分 - 51299
排名 - 436
最新评论
1. re: pku1278 BOAT dp+rmq[未登录]
不好意思,我已经退役2年多了,可能记不得当时实现时候哪里有问题,你可以自己验证下如果用朴素方法求val,而不用RMQ,你的样例能否得出正确值。如果是,那么可能我当时实现RMQ有BUG
--yzhw
2. re: pku1278 BOAT dp+rmq
3
2
2
2
4
1 2 5
2 4 10
3 6 12
2 4 14
你的程序输出31,正确答案27
--无极吧
3. re: pku 3998 Land Division DP斜率优化
评论内容较长,点击标题查看
--lzqxh
4. re: The 36th ACM/ICPC Asia Regional Dalian Online Contest 大连2011ICPC网络赛 个人题解
ans2=min(ans2,1);这句直接ans2=1;就行了吧?
--demo
5. re: The 36th ACM/ICPC Asia Regional Shanghai Site —— Warmup 个人题解
@tjt
有一题当时算法对的,用C++没过。后来用java过掉了
呵呵~我不是说比赛时候做出6题
--yzhw
阅读排行榜
1. The 36th ACM/ICPC Asia Regional Dalian Online Contest 大连2011ICPC网络赛 个人题解(1843)
2. pku1736 恶心的插头DP,终于被搞定了。括号匹配法+hash+四进制(994)
3. poj2513 Colored Sticks 图的连通性判断+欧拉图判断。图里的问题注意首先判断连通性(841)
4. pku 1264 SCUD Busters 凸包+点在形内判断+面积计算(781)
5. The 2010 ACM-ICPC Asia Chengdu Regional Contest Error Curves 三分法求凸函数极值(774)