noip2014联合权值 (贪心+数学推导)
来源:互联网 发布:最早的程序员 编辑:程序博客网 时间:2024/06/05 07:42
然而我并不知道正解是什么=。=
然而我也不知道它想考什么=。=
但是,
贪心加上严格而准确的数学推导这这道题很简洁、很简单就AC了=w=
这就叫做简约高端有内涵=w=
我们把每一个点看成中心点分别处理,只考虑与它直接相连的点
这样,题目要求的距离为2,显然是蓝的和蓝的之间才能满足要求
由于根据题目,同两个点是可以算两遍的,所以我们这种想法是行得通的
然后我们先来找max
max一定是某一个点为中心点(红点)时,它所连的点(蓝点)中得最大值*次大值,
那么我们只需要记录每个点为中心点的最大值和次大值就可以了,然后取max就是我们的最大联合权值=w=
那么和呢?
举个栗子=w=
对于这个图,我们知道sum=v1*v2+v1*v3+v1*v4+v1*v5+v1*v6
+v2*v1+v2*v3+v2*v4+v2*v5+v2*v6
+v3*v1+v3*v2+v3*v4+v3*v5+v3*v6
+......
+v6*v1+v6*v2+v6*v3+v6*v4+v6*v5
=v1*(Σ -v1)+v2*(Σ-v2)+v3*(Σ-v3)+...+v6*(Σ-v6)
所以我们只需要计算出每个i所连的所有点的权值和然后在算的时候用 (sum[i]-v)*v 就可以了
那么对于n个点,(n-1)条边,我们只需要枚举边,
然后分别更新这条边的左右端点的的max1(最大值)、max2(次大值)和sum 就可以了
然后枚举点,去maxn=max(max1[i]*max2[i])
然后再枚举边,按照我们上面的公式计算左右端点对权值总和summ的贡献并加到summ中
然后输出就愉快的AC了=w=
<span style="font-size:18px;">type rec=record a,b:longint;end;const mo=10007;var n,x,y,ans,maxn,summ :longint; i :longint; v,sum :array[0..200010] of longint; l :array[0..200010] of rec; max1,max2 :array[0..200010] of longint;begin read(n); for i:=1 to n-1 do read(l[i].a,l[i].b); for i:=1 to n do read(v[i]); // for i:=1 to n-1 do begin sum[l[i].a]:=(v[l[i].b]+sum[l[i].a]) mod mo; if (v[l[i].b]>max1[l[i].a]) then begin max2[l[i].a]:=max1[l[i].a]; max1[l[i].a]:=v[l[i].b]; end else if (v[l[i].b]>max2[l[i].a]) then max2[l[i].a]:=v[l[i].b]; // sum[l[i].b]:=(v[l[i].a]+sum[l[i].b]) mod mo; if (v[l[i].a]>max1[l[i].b]) then begin max2[l[i].b]:=max1[l[i].b]; max1[l[i].b]:=v[l[i].a]; end else if (v[l[i].a]>max2[l[i].b]) then max2[l[i].b]:=v[l[i].a]; end; // for i:=1 to n do if (max1[i]*max2[i]>maxn) then maxn:=max1[i]*max2[i]; // for i:=1 to n-1 do begin summ:=((((sum[l[i].b]-v[l[i].a]+mo) mod mo)*v[l[i].a]) mod mo+summ) mod mo; summ:=((((sum[l[i].a]+mo-v[l[i].b]) mod mo)*v[l[i].b]) mod mo+summ) mod mo; end; writeln(maxn,' ',summ);end.</span>——by Eirlys
转载请注明出处=w=
- noip2014联合权值 (贪心+数学推导)
- NOIP2014 联合权值
- NOIP2014联合权值
- NOIP2014联合权值
- 【noip2014】联合权值
- NOIP2014 联合权值
- 【NOIP2014】 联合权值
- noip2014联合权值
- NOIP2014 联合权值
- 【NOIP2014】联合权值
- 【NOIP2014 联合权值】
- [NOIP2014]联合权值
- NOIP2014联合权值
- [noip2014]联合权值
- noip2014 联合权值 (树形结构)
- 洛谷P1351 联合权值(NOIp2014)
- 【NOIP2014提高】联合权值
- 【乱搞】noip2014联合权值
- poj 1743 Musical Theme(后缀数组+二分答案+height数组分组)
- CentOS 7 安装Memcached服务
- epub转换mobi
- Java 8 Lambda 学习笔记
- 【DP】【分队问题】
- noip2014联合权值 (贪心+数学推导)
- 转载博文:Centos 下打造合适的科研环境
- 【NOIP 模拟题】[T2]分解数(线性筛+贪心)
- 浅谈 easyui tabs 的href和content属性
- windows下python装openpyxl 以及jdcal
- 剑指offer面试题14
- SpringMVC参数绑定注解
- Android工具类
- 链表增删查