bzoj 3573: [Hnoi2014]米特运输

一个根节点的权值会决定一棵树全部的权值是显然的(一开始也想,枚举一下??呵呵,这么sb的做法怎么可能对,然后就想各种各样的乱搞)

在扒到题解之后,发现还还有取log这个奇巧淫技,,

那么这样对每个点算一下,这个点的权值不变的话,根节点的权值会是多少,那么找一下相同权值最多的就好

(这种乘法会炸的可以尝试去log,,,)

 1 #include <bits/stdc++.h>
 2 #define LL long long
 3 #define lowbit(x) x&(-x)
 4 #define inf 0x3f3f3f3f
 5 #define eps 1e-5
 6 #define N 100005
 7 using namespace std;
 8 inline int ra()
 9 {
10     int x=0,f=1; char ch=getchar();
11     while (ch<‘0‘ || ch>‘9‘) {if (ch==‘-‘) f=-1; ch=getchar();}
12     while (ch>=‘0‘ && ch<=‘9‘) {x=x*10+ch-‘0‘; ch=getchar();}
13     return x*f;
14 }
15 int n,cnt;
16 double a[500005],s[500005],val[500005];
17 int d[500005],head[500005];
18 struct edge{
19     int to,next;
20 }e[1000005];
21 void insert(int x, int y){
22     e[++cnt].next=head[x]; e[cnt].to=y; head[x]=cnt;
23 }
24 void dfs(int x, int fa)
25 {
26     for (int i=head[x];i;i=e[i].next)
27         if (e[i].to!=fa)
28         {
29             s[e[i].to]=s[x]+log(d[x]);
30             dfs(e[i].to,x);
31         }
32 }
33 int main(int argc, char const *argv[])
34 {
35     n=ra();
36     for (int i=1; i<=n; i++) a[i]=ra();
37     for (int i=1; i<n; i++)
38     {
39         int x=ra(),y=ra();
40         insert(x,y); insert(y,x);
41         d[x]++; d[y]++;
42     }
43     for (int i=2; i<=n; i++) d[i]--;
44     s[1]=log(1);
45     dfs(1,0);
46     for (int i=1; i<=n; i++) val[i]=s[i]+log(a[i]);
47 //    for (int i=1; i<=n; i++)
48 //        printf("%.2lf\n",val[i]);
49     sort(val+1,val+n+1);
50     int ans=0,tmp=1;
51     for (int i=2; i<=n; i++)
52         if (val[i]-val[i-1]<eps) tmp++;
53             else ans=max(ans,tmp),tmp=1;
54     ans=max(ans,tmp);
55     cout<<n-ans;
56     return 0;
57 }
时间: 2024-12-06 16:35:27

bzoj 3573: [Hnoi2014]米特运输的相关文章

[BZOJ 3573][Hnoi2014]米特运输(乱搞)

Description 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储 存一直是一个大问题.D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都.这N个城市由N-1条单向高速 通道连接起来,构成一棵以1号城市(首部)为根的树,高速通道的方向由树中的儿子指向父亲.树按深度分层: 根结点深度为0,属于第1层:根结点的子节点深度为1,属于第2层:依此类推,深度为i的结点属于第i+l层.建好 高速通道之后,D星人开始考虑如何具体地储存和传输米

【BZOJ】3573: [Hnoi2014]米特运输

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3573 屁话一堆,就是说: 1.一棵树中的每个点的每个儿子的权值之和要等于这个点的权值 2.一棵树中的每个点的每个儿子的权值相等. 所以,考虑确定一个点即确定的整个树的每个点的权值,但是我们受限于数据范围又不能枚举每一个点,所以枚举每一个点,考虑这个点的权值不变的话根节点的权值会是多少,这个是可以DP的,然后取个众数即可. 当然,权值过大所以需要一发HASH. 1 #include<ios

【BZOJ 3573】 [Hnoi2014]米特运输

3573: [Hnoi2014]米特运输 Time Limit: 20 Sec Memory Limit: 128 MB Submit: 618 Solved: 359 [Submit][Status][Discuss] Description 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都.这N个城市由N-1条单向高速通道连接起来,构成一棵以1号城市(首部)为

[HNOI2014]米特运输

题目描述 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都.这N个城市由N-1条单向高速通道连接起来,构成一棵以1号城市(首部)为根的树,高速通道的方向由树中的儿子指向父亲.树按深度分层:根结点深度为0,属于第1层:根结点的子节点深度为1,属于第2层:依此类推,深度为i的结点属于第i+l层. 建好高速通道之后,D星人开始考虑如何具体地储存和传输米特资源.由于发展程

bzoj3573[Hnoi2014]米特运输

http://www.lydsy.com/JudgeOnline/problem.php?id=3573 好吧,虽然这是day1最后一题,但却是最水的一题....(前提:看懂题目) 仔细看题! 仔细看题! 仔细看题! 看懂题后就知道设第$i$个点的儿子节点的个数为$degree[i]$,容量为$A[i]$,我们要修改最少的点的容量,使得每个点$i$的儿子的容量均为$\frac{A[i]}{degree[i]}$ 我们发现如果一个点的容量是确定的,那么整个树的容量都是确定的 我们记第$i$个点的所

洛谷 P3237 [HNOI2014]米特运输

这其实是超级大水题,难度不及一道提高组的dp,如果读懂了题面... 好吧我读懂了题面,然而并不知道1号节点是否一定要装满... (根据做题的情况来看1号也是要装满的,尽管不进行能量收集) 然而为什么我还是不会做呢.... 稍微观察一下就可以发现: 根节点容量确定后,整棵树容量都可以确定. 因此如果要保证树上某一节点的容量不进行修改,那么根节点必须为某一确定容量 记ncn[i]为i节点的子节点个数,那么对于原来容量为a[i]的节点i,如果不能修改,则要求根节点容量为 a[i]*(i到根节点的路径上

BZOJ3573 [Hnoi2014]米特运输 【贪心】

题目链接 BZOJ3573 题解 题目又臭又长系列 题意:修改尽量少的点权,使得: ①同个节点的所有儿子点权相同 ②任意非叶节点权值等于其儿子权值之和 容易发现一旦任意一个点权值确定,整棵树权值就确定 一个比较简单的想法是枚举根节点权值 但我们可以通过计算出每个节点如若保留原值,根节点会是什么值 如果两个节点能同时不变,当且仅当它们对应根节点权值相等 我们算出来排序选择权值最多的那一个就好了 直接乘会爆\(long long\),可使用\(log\)转化为加法 #include<algorith

【BZOJ-3573】米特运输 树形DP

3573: [Hnoi2014]米特运输 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1023  Solved: 604[Submit][Status][Discuss] Description 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题.    D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都.这N个城市由N-1条单向高速通道连接起来,构成一棵以1号城市(

BZOJ 3573 米特运输

Description 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题.    D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都.这N个城市由N-1条单向高速通道连接起来,构成一棵以1号城市(首部)为根的树,高速通道的方向由树中的儿子指向父亲.树按深度分层:根结点深度为0,属于第1层:根结点的子节点深度为1,属于第2层:依此类推,深度为i的结点属于第i+l层.    建好高速通道之后,D星人开始考虑如何具体地储存