POJ终于修好啦

题意

和UVA1205是同一题,在洛谷上是紫题

有一棵树,需要给其所有节点染色,每个点染色所需的时间是一样的都是11.给每个点染色,还有一个开销“当前时间×ci×ci”,cici是每个节点的一个权值。(当前时间是染完这个节点的时间)  染色还有另一个约束条件,要染一个点必须要先染好其父节点,所以第一个染的点是根节点.  求最小开销。

思路

这道题显然对于 每一个可选的子节点选最重的 的贪心思路是错误的

就有点类似动态规划了 不过不DP也是可以贪心出来的。但是这个策略比较麻烦。大致思路就是父节点和子节点经过一些操作合并,合并之后贪心就是没问题的了。

不过我一开始自己的思路就是类似并查集+贪心的,不是合并(虽然差不多),就是全局贪心,把所有的点的权值排序,然后最大到最小的所有点慢慢并查集搜回去,直到所有点被处理过,也应该是可以的吧?但是时间复杂度肯定不行,于是就看李煜东的代码了(颓)。

Code

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; #define N 1005 int n, r;
double c[N];
int nxt[N], la[N], num[N],fa[N];
double d[N],tot[N];
bool vis[N]; void color_a_tree()
{
for (int i = ; i <= n; i++)
{
scanf("%lf", &c[i]);
nxt[i] = i; la[i] = i; num[i] = ; tot[i] = c[i];
}
memcpy(d, c, sizeof(d));
for (int i = , a, b; i < n; i++)scanf("%d%d", &a, &b), fa[b] = a;
memset(vis, , sizeof(vis));
for (int i = ; i < n; i++)
{
int p;
double k = ;
for(int j=;j<=n;j++)
if (j != r && !vis[j] && c[j] > k)
{
k = c[j];
p = j;
}
int f = fa[p];
while (vis[f]) fa[p] = f = fa[f];//getfather
nxt[la[f]] = p;
la[f] = la[p];
num[f] += num[p];
tot[f] += tot[p];
c[f] = tot[f] / num[f];
vis[p] = ;
}
int ans = ;
for (int i = ; i <= n; i++)
{
ans += i * d[r];
r = nxt[r];
}
printf("%d\n", ans);
} int main()
{
while (scanf("%d%d", &n, &r) == && n && r) color_a_tree();
return ;
}

最新文章

  1. App瘦身
  2. 2016 Multi-university training contest
  3. 统计学习方法 AdaBoost
  4. 创建表 添加主键 添加列常用SQL语句
  5. 编译linux内核以及depmod的使用
  6. c# 为什么要用 get set 属性
  7. 每周.NET前沿技术文章摘要(2017-05-17)
  8. 夏娜的菠萝包 JDFZ1098
  9. OKR源自德鲁克和格鲁夫,跟谷歌是天作之合:4星|《这就是OKR》
  10. 搭建一个简单的Eureka程序
  11. spark各种模式提交任务介绍
  12. JAVA-获取 JDK 动态代理生成的 Class 文件
  13. oracle user locked(timed)处理
  14. Python自学:第三章 在列表末尾添加元素与在列表中插入元素
  15. [BZOJ3674]可持久化并查集加强版&amp;[BZOJ3673]可持久化并查集 by zky
  16. 神经网络中的激活函数具体是什么?为什么ReLu要好过于tanh和sigmoid function?(转)
  17. JVM源码---教你傻瓜式编译openjdk7(JAVA虚拟机爱好者必看)
  18. LDO current regulator for power LED
  19. 不知不觉vs2012 update 4出来了
  20. 远程桌面时出现身份验证错误,要求的函数不正确,这可能是由于CredSSP加密Oracle修正

热门文章

  1. 值得推荐的C/C++框架和库 (真的很强大) c
  2. Java多线程、线程池和线程安全整理
  3. webserver Etcd Cluster / CoreOS etcd / macOS etcd
  4. nginx第三方库安装以及连接memcache
  5. linux下安装与配置Redis
  6. css浮动(float)全方位案例解析
  7. git for windows 本地仓库
  8. Collections.unmodifiableMap(Map map)
  9. Groovy 设计模式 -- 责任链模式
  10. TCP-IP详解学习笔记1