8.10-Day2T3 镇守府
emm
IOI原题(洛谷,bzoj都有)
其实并没有怎么搞懂dp方程转移那部分
就...粘个(抄来的)代码过来吧
#include<bits/stdc++.h>
using namespace std; inline int read()
{
int sum = ,p = ;
char ch = getchar();
while(ch < '' || ch > '')
{
if(ch == '-')
p = -;
ch = getchar();
}
while(ch >= '' && ch <= '')
{
(sum *= ) += ch - '';
ch = getchar();
}
return sum * p;
} const int N = ,M = ;
const int inf = 0x3f3f3f3f;
int n,m,head[N],w[N],f[N],cnt;
int dis[N][N],dp[N][M][N];
struct edge
{
int nxt,to;
}e[N]; void add(int a,int b)
{
e[++cnt].nxt = head[a];
e[cnt].to = b;
head[a] = cnt;
} void dfs(int u)
{
for(int last = u,i = f[u]; i != -; i = f[i])
{
dis[u][i] = dis[u][last] + dis[last][i];
last = i;
}
for(int i = head[u]; i; i = e[i].nxt)
dfs(e[i].to);
} void tree_dp(int u)
{
bool flag = true;
for(int i = head[u]; i; i = e[i].nxt)
{
flag = false;
tree_dp(e[i].to);
}
if(flag)
{
for(int i = f[u]; i != -; i = f[i])
dp[u][][i] = dis[u][i] * w[u];
return;
}
if(u != )
dp[u][][u] = inf;
for(int i = head[u]; i; i = e[i].nxt)
{
int v = e[i].to;
for(int p = f[u]; p != -; p = f[p])
{
for(int j = m; j >= ; j--)
{
int tmp = inf;
for(int k = ; k <= j; k++)
tmp = min(tmp,dp[u][k][p] + dp[v][j - k][p]);
dp[u][j][p] = tmp;
}
}
for(int j = m; j >= ; j--)
{
int tmp = inf;
for(int k = (u != ); k <= j; k++)
tmp = min(tmp,dp[u][k][u] + dp[v][j - k][u]);
dp[u][j][u] = tmp;
}
}
for(int p = f[u]; p != -; p = f[p])
for(int i = ; i <= m; i++)
{
dp[u][i][p] += dis[u][p]*w[u];
dp[u][i][p] = min(dp[u][i][p],dp[u][i][u]);
}
} int main()
{
freopen("riv.in","r",stdin);
freopen("riv.out","w",stdout);
n = read(),m = read();
for(int i = ; i <= n; i++)
{
w[i] = read();
f[i] = read();
dis[i][f[i]] = read();
add(f[i],i);
}
f[] = -;
dfs();
tree_dp();
printf("%d\n",dp[][m][]);
return ;
}
8.10-Day2T3 镇守府的更多相关文章
- ACM-南京理工大学第八届程序设计竞赛-网络赛(2016.04.17)
A.偷吃糖果Time Limit: 1000Ms Memory Limit: 65536KB Description小鱼喜欢吃糖果.他有两盒糖果,两盒糖果分别仅由小写字母组成的字符串s和字符串t构成. ...
- 【hihoCoder】#1133 : 二分·二分查找之k小数
题目描述 在上一回里我们知道Nettle在玩<艦これ>,Nettle的镇守府有很多船位,但船位再多也是有限的.Nettle通过捞船又出了一艘稀有的船,但是已有的N(1≤N≤1,000,00 ...
- Hiho : 二分·二分查找之k小数
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上一回里我们知道Nettle在玩<艦これ>,Nettle的镇守府有很多船位,但船位再多也是有限的.Nettl ...
- hihoCoder 1133 二分·二分查找之k小数(TOP K算法)
#1133 : 二分·二分查找之k小数 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上一回里我们知道Nettle在玩<艦これ>,Nettle的镇守府有很 ...
- 【HIHOCODER 1133】 二分·二分查找之k小数
描述 在上一回里我们知道Nettle在玩<艦これ>,Nettle的镇守府有很多船位,但船位再多也是有限的.Nettle通过捞船又出了一艘稀有的船,但是已有的N(1≤N≤1,000,000) ...
- 谁才是最强战舰!-From 南京理工大学第八届程序设计大赛(校外镜像),博弈~~
谁才是最强战舰! Time Limit: 1000MS Memory Limit: 65536KB Description 依阿华来到镇守府的第一件事情,就是找大和solo!然而这并不是什么好消息,说 ...
- hiho week 37 P1 : 二分·二分查找之k小数
P1 : 二分·二分查找之k小数 Time Limit:10000ms Case Time Limit:1000ms Memory Limit:256MB 描述 在上一回里我们知道Nettle在玩&l ...
- “乐”动人心--2017年10款最佳音乐类APP设计盘点
在上下班的路上,听几首自己喜欢的音乐来打发无聊的等公交车和地铁的时间是现代年轻人的常态.音乐作为最能鼓动人心的"语言",也成为了人们在互联网生活里占比例最高的消费活动之一,一款好看 ...
- 如何用Python统计《论语》中每个字的出现次数?10行代码搞定--用计算机学国学
编者按: 上学时听过山师王志民先生一场讲座,说每个人不论干什么,都应该学习国学(原谅我学了计算机专业)!王先生讲得很是吸引我这个工科男,可能比我的后来的那些同学听课还要认真些,当然一方面是兴趣.一方面 ...
随机推荐
- C语言 sizeof()用法介绍
本文 转自https://www.cnblogs.com/huolong-blog/p/7587711.html 1. 定义 sizeof是一个操作符(operator). 其作用是返回 ...
- webpack 代理问题
devServer host: '0.0.0.0' 或者是ip 形式的 ,proxy 中 的 target,host 需要为ip形式的地址, host: 'aa.a.com' 为字符形式的 ,prox ...
- npm 基础命令
npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准.有了npm,可以很快的找到特定服务要使用的包,进行下载.安装以及管理已经安装的包.npm 从5.2版开始,增加了 ...
- The Softmax function and its derivative
https://eli.thegreenplace.net/2016/the-softmax-function-and-its-derivative/ Eli Bendersky's website ...
- centos7在命令界面使用命令可以执行,但在jenkins中输入命令报Chrome has crashed.
问题:selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: ex ...
- [ZJOI2007] 矩阵游戏 - 二分图匹配
题意:问一个\(0-1\)方阵是不是非奇异的 其实我真的很想求行列式 #include <bits/stdc++.h> using namespace std; #define N 505 ...
- 从ASCII到Unicode再到UTF-8的历史原由
编码 大小 支持语言 ASCII 1个字节 英文 Unicode 2个字节(生僻字4个) 所有语言 UTF-8 1-6个字节,英文字母1个字节,汉字3个字节,生僻字4-6个字节 所有语言 具体解释: ...
- hadoop 部署在centos 7 上
一.准备工作 (文章写于 2019-6) 根据官方文档而来,请注意时间,官方可能有更新,以官方文档为准 1. 配置网站参考: http://hadoop.apache.org/docs/r1.0.4 ...
- yii2表单提交CSRF验证
Yii2表单提交默认需要验证CSRF,如果CSRF验证不通过,则表单提交失败,解决方法如下: 第一种解决办法是关闭Csrf public $enableCsrfValidation = false; ...
- 心里没点B树,怎能吃透数据库索引底层原理?
二叉树(Binary Search Trees) 二叉树是每个结点最多有两个子树的树结构.通常子树被称作“左子树”(Left Subtree)和“右子树”(Right Subtree).二叉树常被用于 ...