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 镇守府的更多相关文章

  1. ACM-南京理工大学第八届程序设计竞赛-网络赛(2016.04.17)

    A.偷吃糖果Time Limit: 1000Ms Memory Limit: 65536KB Description小鱼喜欢吃糖果.他有两盒糖果,两盒糖果分别仅由小写字母组成的字符串s和字符串t构成. ...

  2. 【hihoCoder】#1133 : 二分·二分查找之k小数

    题目描述 在上一回里我们知道Nettle在玩<艦これ>,Nettle的镇守府有很多船位,但船位再多也是有限的.Nettle通过捞船又出了一艘稀有的船,但是已有的N(1≤N≤1,000,00 ...

  3. Hiho : 二分·二分查找之k小数

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上一回里我们知道Nettle在玩<艦これ>,Nettle的镇守府有很多船位,但船位再多也是有限的.Nettl ...

  4. hihoCoder 1133 二分·二分查找之k小数(TOP K算法)

    #1133 : 二分·二分查找之k小数 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上一回里我们知道Nettle在玩<艦これ>,Nettle的镇守府有很 ...

  5. 【HIHOCODER 1133】 二分·二分查找之k小数

    描述 在上一回里我们知道Nettle在玩<艦これ>,Nettle的镇守府有很多船位,但船位再多也是有限的.Nettle通过捞船又出了一艘稀有的船,但是已有的N(1≤N≤1,000,000) ...

  6. 谁才是最强战舰!-From 南京理工大学第八届程序设计大赛(校外镜像),博弈~~

    谁才是最强战舰! Time Limit: 1000MS Memory Limit: 65536KB Description 依阿华来到镇守府的第一件事情,就是找大和solo!然而这并不是什么好消息,说 ...

  7. hiho week 37 P1 : 二分·二分查找之k小数

    P1 : 二分·二分查找之k小数 Time Limit:10000ms Case Time Limit:1000ms Memory Limit:256MB 描述 在上一回里我们知道Nettle在玩&l ...

  8. “乐”动人心--2017年10款最佳音乐类APP设计盘点

    在上下班的路上,听几首自己喜欢的音乐来打发无聊的等公交车和地铁的时间是现代年轻人的常态.音乐作为最能鼓动人心的"语言",也成为了人们在互联网生活里占比例最高的消费活动之一,一款好看 ...

  9. 如何用Python统计《论语》中每个字的出现次数?10行代码搞定--用计算机学国学

    编者按: 上学时听过山师王志民先生一场讲座,说每个人不论干什么,都应该学习国学(原谅我学了计算机专业)!王先生讲得很是吸引我这个工科男,可能比我的后来的那些同学听课还要认真些,当然一方面是兴趣.一方面 ...

随机推荐

  1. [转] c# 中使用opencv进行视频捕获

    简介 这个项目是关于如何从网络摄像头或者视频文件(*.AVI)中捕获视频的,这个项目是用C#和OPENCV编写的. 这将有助于那些喜欢C#和OpenCV环境的人.这个程序完全基于Visual Stud ...

  2. linux基础之CentOS启动流程

    一.基本概念 内核设计流派: 单内核设计:Linux //所有功能集成于同一个程序 微内核设计:Windows,Solaris //每种功能使用一个单独子系统实现 Linux内核特点: 支持模块化:. ...

  3. mysql 基础sql语法总结 (二)DML

    二.DML(增.删.改) 1)插入数据 第一种写法:INSERT INTO 表名 (列名1,列名2,,......)VALUES(列值1,列值2,......) 第二种写法:INSERT INTO 表 ...

  4. Apache服务:使用 Apache 服务部署静态网站

    1.安装Apache服务 第一步:安装Apache服务程序   yum install httpd 具体流程参考https://www.cnblogs.com/python-wen/p/1016845 ...

  5. openlayers 保存当前地图View为图片

    /** * 保存地图为图片工具栏 */function addMapToolSavePicture() { var saveElement = document.createElement('a'); ...

  6. StackExchange.Redis 之 SortedSet 类型示例

    1,增加操作 RedisCacheHelper.Instance.ZSortadd(); RedisCacheHelper.Instance.ZSortadd(); RedisCacheHelper. ...

  7. RabbitMQ使用注意事项

    用ConnectionFactory创建的TCP连接要复用,因为创建新的TCP连接比较耗时. IModel(信道)是轻量级的,可以用时创建. channel.BasicQos(0, 1, false) ...

  8. linux常用命令和字符串乱码

    top :动态实时显示cpu.内存.进程等使用情况(类似windows下的任务管理器) ps aux 查看所有进程 ps aux|grep java 查看java进程 kill -9 进程号 :强制杀 ...

  9. c#中的位运算

    &与  全为1才是1 |或  全为0才是0 !非  两边相同时为1,不同时为0 ~取反  0变1,1变0,包括符号位 >>右移 溢出舍掉,正数补0,负数补1,移动n位:原数 / 2 ...

  10. Visibility Graph Analysis of Geophysical Time Series: Potentials and Possible Pitfalls

    Tasks: invest papers  3 篇. 研究主动权在我手里.  I have to.  1. the benefit of complex network: complex networ ...