BZOJ 1065 奥运物流
http://www.lydsy.com/JudgeOnline/problem.php?id=1065
思路:由于n个点,有n条边,因此由根就会引出一个环,我们枚举环的长度,在那个长度断开,我们假设len为环的长度。
由于R(i)满足

而产生环时,R[1]=Σci*k^di + R[1]*(k^len),得到
R[1]=(Σci*k^di)/(1-k^len)
因此我们枚举len,然后做树形DP,f[i][j][k]代表第i个点,修改了j次,当前深度为k
那么最后的贡献是Σf[i][j][1],i为1的直接儿子,用一个01背包统计,最后答案就是(ans+c[1])/(1-k^len)
有个蛋疼的地方就是做01背包的时候。。要注意循环变量的顺序,不要重复统计。。
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
int n,m,pre[];
double K[],c[],f[][][],g[][][],F[];
int read(){
int t=,f=;char ch=getchar();
while (ch<''||ch>''){if (ch=='-') f=-;ch=getchar();}
while (''<=ch&&ch<=''){t=t*+ch-'';ch=getchar();}
return t*f;
}
void dp(int x,int dep){
for (int i=;i<=n;i++) if (pre[i]==x) dp(i,dep+);
for (int d=std::min(,dep);d<=dep;d++){
for (int j=;j<=m;j++) F[j]=;
for (int i=;i<=n;i++)
if (pre[i]==x)
for (int j=m;j>=;j--)
for (int k=j;k>=;k--)
F[j]=std::max(F[j],F[k]+g[i][j-k][d]);
for (int i=;i<=m;i++)
f[x][i][d]=F[i]+c[x]*K[d];
}
if (dep>){
for (int i=;i<=m;i++) F[i]=;
for (int i=;i<=n;i++)
if (pre[i]==x)
for (int j=m;j>=;j--)
for (int k=j;k>=;k--)
F[j]=std::max(F[j],F[k]+g[i][j-k][]);
for (int i=;i<=m;i++)
f[x][i][]=F[i-]+c[x]*K[];
}
for (int j=;j<=m;j++)
for (int d=;d<dep;d++)
g[x][j][d]=std::max(f[x][j][d+],f[x][j][]);
}
int main(){
n=read();m=read();scanf("%lf",&K[]);
for (int i=;i<=n;i++) K[i]=K[i-]*K[];
for (int i=;i<=n;i++) pre[i]=read();
for (int i=;i<=n;i++) scanf("%lf",&c[i]);
double ans=;
for (int I=pre[],len=;I-;I=pre[I],len++){
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
for (int k=;k<=n;k++)
f[i][j][k]=g[i][j][k]=;
int tmp=pre[I];pre[I]=;
for (int i=;i<=n;i++) if (pre[i]==) dp(i,);
for (int i=;i<=m;i++) F[i]=;
for (int i=;i<=n;i++)
if (pre[i]==)
for (int j=m;j>=;j--)
for (int k=j;k>=;k--)
F[j]=std::max(F[j],F[k]+f[i][j-k][]);
double now=;
for (int i=;i<m;i++) now=std::max(now,F[i]);
if (tmp==) now=std::max(now,F[m]);
pre[I]=tmp;
ans=std::max(ans,(now+c[])/(-K[len]));
}
printf("%.2lf\n",ans);
}
BZOJ 1065 奥运物流的更多相关文章
- bzoj 1065: [NOI2008] 奥运物流
1065: [NOI2008] 奥运物流 Description 2008北京奥运会即将开幕,举国上下都在为这一盛事做好准备.为了高效率.成功地举办奥运会,对物流系统 进行规划是必不可少的.物流系统由 ...
- 【BZOJ1065】【NOI2008】奥运物流(动态规划)
[BZOJ1065][NOI2008]奥运物流(动态规划) 题面 BZOJ 洛谷 题解 先不考虑环的情况,于是变成了一棵树. 这样子我们答案的贡献是\(\sum_{i=1}^nC_i\times k^ ...
- 【洛谷】P4202 [NOI2008]奥运物流
[洛谷]P4202 [NOI2008]奥运物流 感觉有点降智 首先设环长为\(len\),很容易推导出 \[ R(1) = \frac{\sum_{i = 1}^{N} C_{i} k^{dep[i] ...
- 题解 Sue的小球/名次排序问题/方块消除/奥运物流
Sue的小球 名次排序问题 方块消除 奥运物流 Sue的小球 题目大意 有 \(n\) 个小球在下落,初始位置 \((x_i,y_i)\),下落速度为 \(v_i\).你初始位置在 \(x_0\),速 ...
- 【BZOJ 1065】【Vijos 1826】【NOI 2008】奥运物流
http://www.lydsy.com/JudgeOnline/problem.php?id=1065 https://vijos.org/p/1826 好难的题啊TWT ∈我这辈子也想不出来系列~ ...
- 1065: [NOI2008]奥运物流 - BZOJ
Sample Input4 1 0.52 3 1 310.0 10.0 10.0 10.0Sample Output30.00 推荐题解:http://blog.csdn.net/whjpji/art ...
- BZOJ 1003: [ZJOI2006]物流运输trans DP+最短路
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...
- BZOJ 1003 [ZJOI2006]物流运输trans
1003: [ZJOI2006]物流运输trans Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4242 Solved: 1765[Submit] ...
- BZOJ 1003: [ZJOI2006]物流运输trans(最短路+dp)
1A,爽! cost[i][j]表示从第i天到第j天不改路线所需的最小花费,这个可以用最短路预处理出.然后dp(i)=cost[j][i]+dp(j-1)+c. c为该路线的花费. --------- ...
随机推荐
- Android中focusable属性的妙用——底层按钮的实现
http://www.cnblogs.com/kofi1122/archive/2011/03/22/1991828.html http://www.juziku.com/weizhishi/3077 ...
- BZOJ 2626 JZPFAR(KD-tree)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2626 题意:平面上有n个点.现在有m次询问,每次给定一个点(px, py)和一个整数k, ...
- Sql server中Collation conflict问题
SQL语句查询时select A.Code,A.Name,a.Systemcode,B.ID,B.LogType,B.DMCode,B.IP,B.Department,B.CreateBy,B.Cre ...
- HDU 1251 字典树(前缀树)
题目大意 :Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).(单词互不相同) ...
- Zigzag Iterator 解答
Question Given two 1d vectors, implement an iterator to return their elements alternately. For examp ...
- 利用智能手机(Android)追踪一块磁铁(三)
更新磁铁追踪算法的源代码,Android Studio项目工程 github地址:https://github.com/amazingyyc/MagnetLocate 说明:将磁铁的位置信息封装成消息 ...
- JSTL核心标签库学习笔记
写的很简单,不一定会有用,如果想要详细的话,建议看API啊--- 不过在这里推荐一个地址,http://www.yiibai.com/jstl/ 希望对你们有帮助啊,很好的教材啊 1.<c:i ...
- poj 3669 Meteor Shower(bfs)
Description Bessie hears that an extraordinary meteor shower is coming; reports say that these meteo ...
- Gym Class(拓扑排序)
Gym Class Time Limit: 6000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- uva 11210 Chinese Mahjong(暴力搜索)
Chinese Mahjong Mahjong () is a game of Chinese origin usually played by four persons with tiles res ...