http://www.lydsy.com/JudgeOnline/problem.php?id=3573

好吧,虽然这是day1最后一题,但却是最水的一题。。。。(前提:看懂题目)

仔细看题!

仔细看题!

仔细看题!

看懂题后就知道设第$i$个点的儿子节点的个数为$degree[i]$,容量为$A[i]$,我们要修改最少的点的容量,使得每个点$i$的儿子的容量均为$\frac{A[i]}{degree[i]}$

我们发现如果一个点的容量是确定的,那么整个树的容量都是确定的

我们记第$i$个点的所有祖先的$degree$的乘积为$P[i]$,如果第$i$个点无需修改,那么根结点的容量应该为$P[i]*A[i]$

我们要找到最多的点使得$P[i]*A[i]$相同即可

用一个map维护即可

但是$P[i]$有可能非常大,我们哈希一下即可

。。。。。。。。。。。。。。。

。。。。。。。。。。。。。。。

。。。。。。。。。。。。。。。

  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<iostream>
  4. #include<fstream>
  5. #include<algorithm>
  6. #include<cstring>
  7. #include<string>
  8. #include<cmath>
  9. #include<queue>
  10. #include<stack>
  11. #include<map>
  12. #include<utility>
  13. #include<set>
  14. #include<bitset>
  15. #include<vector>
  16. #include<functional>
  17. #include<deque>
  18. #include<cctype>
  19. #include<climits>
  20. #include<complex>
  21. #include<cassert>
  22. //#include<bits/stdc++.h>适用于CF,UOJ,但不适用于poj
  23.  
  24. using namespace std;
  25.  
  26. typedef long long LL;
  27. typedef double DB;
  28. typedef pair<int,int> PII;
  29. typedef pair<DB,DB> PDD;
  30. typedef complex<DB> CP;
  31. typedef vector<int> VI;
  32.  
  33. #define mmst(a,v) memset(a,v,sizeof(a))
  34. #define mmcy(a,b) memcpy(a,b,sizeof(a))
  35. #define fill(a,l,r,v) fill(a+l,a+r+1,v)
  36. #define re(i,a,b) for(i=(a);i<=(b);i++)
  37. #define red(i,a,b) for(i=(a);i>=(b);i--)
  38. #define fi first
  39. #define se second
  40. #define mp(a,b) make_pair(a,b)
  41. #define pb(a) push_back(a)
  42. #define SF scanf
  43. #define PF printf
  44. #define two(k) (1<<(k))
  45. #define SZ(x) (int(x.size()))
  46. #define all(x) (x).begin(),(x).end()
  47. #define ire(i,v,x) for(i=0,v=i<SZ(x)?x[i]:0;i<SZ(x);v=x[++i])
  48.  
  49. template<class T>inline T sqr(T x){return x*x;}
  50. template<class T>inline void upmin(T &t,T tmp){if(t>tmp)t=tmp;}
  51. template<class T>inline void upmax(T &t,T tmp){if(t<tmp)t=tmp;}
  52.  
  53. inline int sgn(DB x){if(abs(x)<1e-)return ;return(x>)?:-;}
  54. const DB Pi=acos(-1.0);
  55.  
  56. int gint()
  57. {
  58. int res=;bool neg=;char z;
  59. for(z=getchar();z!=EOF && z!='-' && !isdigit(z);z=getchar());
  60. if(z==EOF)return ;
  61. if(z=='-'){neg=;z=getchar();}
  62. for(;z!=EOF && isdigit(z);res=res*+z-'',z=getchar());
  63. return (neg)?-res:res;
  64. }
  65. LL gll()
  66. {
  67. LL res=;bool neg=;char z;
  68. for(z=getchar();z!=EOF && z!='-' && !isdigit(z);z=getchar());
  69. if(z==EOF)return ;
  70. if(z=='-'){neg=;z=getchar();}
  71. for(;z!=EOF && isdigit(z);res=res*+z-'',z=getchar());
  72. return (neg)?-res:res;
  73. }
  74.  
  75. const int maxn=;
  76. const LL MOD[]={1000000007LL,813413241LL,2421544587LL};
  77.  
  78. typedef map<pair<pair<LL,LL>,LL>,int> MLLL;
  79.  
  80. int n;
  81. int A[maxn];
  82. LL P[maxn][];
  83.  
  84. MLLL S;
  85. int now,info[maxn];
  86. struct Tedge{int v,next;}edge[*maxn];
  87. int degree[maxn];
  88. int fa[maxn],head,tail,que[maxn];
  89.  
  90. void addedge(int u,int v){edge[++now]=(Tedge){v,info[u]};info[u]=now;}
  91.  
  92. int main()
  93. {
  94. freopen("meat.in","r",stdin);
  95. freopen("meat.out","w",stdout);
  96. int i,j;
  97. n=gint();
  98. re(i,,n)A[i]=gint();
  99. mmst(info,-);now=-;
  100. re(i,,n-){int u=gint(),v=gint();addedge(u,v);degree[u]++;degree[v]++;}
  101. re(i,,n)degree[i]--;
  102. que[head=tail=]=;
  103. re(j,,)P[][j]=;
  104. while(head<=tail)
  105. {
  106. int u=que[head++],v;
  107. for(i=info[u],v=edge[i].v;i!=-;i=edge[i].next,v=edge[i].v)if(v!=fa[u])
  108. {
  109. fa[que[++tail]=v]=u;
  110. re(j,,)P[v][j]=P[u][j]*LL(degree[u])%MOD[j];
  111. }
  112. }
  113. re(i,,n)re(j,,)P[i][j]=P[i][j]*LL(A[i])%MOD[j];
  114. re(i,,n)S[mp(mp(P[i][],P[i][]),P[i][])]++;
  115. int ans=;
  116. for(MLLL::iterator it=S.begin();it!=S.end();it++)upmax(ans,it->se);
  117. ans=n-ans;
  118. cout<<ans<<endl;
  119. return ;
  120. }

bzoj3573[Hnoi2014]米特运输的更多相关文章

  1. BZOJ3573:[HNOI2014]米特运输(树形DP)

    Description 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储 存一直是一个大问题.D星上有N个城市,我们将其顺序编号为1到N,1号城市 ...

  2. BZOJ3573: [Hnoi2014]米特运输(树上乱搞)

    Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1669  Solved: 1031[Submit][Status][Discuss] Descript ...

  3. BZOJ3573 HNOI2014米特运输

    显然确定一个点的权值后整棵树权值确定.只要算出根节点的权值就能知道两种改法是否等价. 乘的话显然会炸,取log即可.map似乎会出一些问题,sort即可. #include<iostream&g ...

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

    题目链接 BZOJ3573 题解 题目又臭又长系列 题意:修改尽量少的点权,使得: ①同个节点的所有儿子点权相同 ②任意非叶节点权值等于其儿子权值之和 容易发现一旦任意一个点权值确定,整棵树权值就确定 ...

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

    3573: [Hnoi2014]米特运输 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1023  Solved: 604[Submit][Statu ...

  6. BZOJ_3573_[Hnoi2014]米特运输_树形DP+hash

    BZOJ_3573_[Hnoi2014]米特运输_树形DP+hash 题意: 给你一棵树每个点有一个权值,要求修改最少的权值,使得每个节点的权值等于其儿子的权值和且儿子的权值都相等. 分析: 首先我们 ...

  7. 洛谷 P3237 [HNOI2014]米特运输 解题报告

    P3237 [HNOI2014]米特运输 题目描述 米特是\(D\)星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. \(D\)星上有 ...

  8. bzoj 3573: [Hnoi2014]米特运输

    3573: [Hnoi2014]米特运输 Description 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题.    D星 ...

  9. 【bzoj3573】[HNOI2014]米特运输

    题目描述 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题.D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都.这N个城 ...

随机推荐

  1. [转] Java快速教程

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Java是面向对象语言.这门语言其实相当年轻,于1995年才出现,由Sun公司出品 ...

  2. Java基础知识强化19:Java中switch分支语句

    java中switch语句: 这里expression控制表达式的数据类型只能是byte.short.char.int四种整型类型和枚举类型,不能是boolean类型: Java7(1.7)改进了sw ...

  3. css样式之背景图片

    1.css样式背景之使用图片来做为背景 example: <!DOCTYPE html> <html> <head> <meta http-equiv=&qu ...

  4. left ,right ,cross ,full/left outer join/区别 详解

    --创建测试表wwif OBJECT_ID('qq') is not null drop table qqcreate table qq([序号] varchar(5),[内容1] varchar(1 ...

  5. c#隐式转换之有符号位转换

    有符号位类型的转换,额外的高位用源表达式的符号位填充.这样就维持了被转换的值的正确符号和大小. 特别注意的是负数的转换,额外的高位用1填充,因为负数的二进制表示是对应正数的二进制取反加1,所以高位用1 ...

  6. iOS移动端架构的那些事!(转载)

    一个app的初始阶段,必然是先满足各种业务需求.然后,经过多次版本迭代之后,先前的由于急于满足需求而导致的杂乱代码则会充斥整个项目.而此时,项目有了一定的规模,有了一定数量的开发人员,那么为了达到快速 ...

  7. 【转】 iOS学习之sqlite的创建数据库,表,插入查看数据

    原文:  http://blog.csdn.net/totogo2010/article/details/7702207 iOS sqlite数据库操作.步骤是: 先加入sqlite开发库libsql ...

  8. MySQL 管理

    MySQL 管理 启动及关闭 MySQL 服务器 首先,我们需要通过以下命令来检查MySQL服务器是否启动: ps -ef | grep mysqld 如果MySql已经启动,以上命令将输出mysql ...

  9. poi大数据将excel2007导入数据库

    package com.jeeframe.cms.updata.service.impl; import java.io.IOException; import java.io.InputStream ...

  10. ReetrantLock Synchronized Atomic的性能对比

    之前看到了一篇帖子关于Lock和Synchronized的性能,写的是Lock比Synchronized的性能要好,可是,我试了下,结果却不是这样的,我所使用的JDK的版本是1.7,可能跟原帖作者用的 ...