jzoj 3567. 【GDKOI2014】石油储备计划
Problem
Description
Input
Output
对于每组数据,输出一个整数,表示达到“平衡”状态所需的最小代价。
Data Constraint
对于20%的数据,N<=15
对于100%的数据,T<=10,N<=100,0<=si<=10000,1<=X,Y<=N,1<=Z<=10000。
Solution
这题可以用费用流求解,奈何太长了
只好DP了
我们发现,当达到所谓“平衡”状态时,每个点的石油数应是ave或ave+1
所以我们考虑枚举子树中ave+1的节点的个数
设\(f_{i,j}\)表示以i为根的子树中有j个ave+1的节点的最小贡献
如果我们暴力枚举会T飞
所以考虑合并
用\(g_{j}\)来存当前的当前的答案
则f数组存的则是之前做的所有的儿子的答案
则该儿子节点的贡献则为\(abs(sum_{son}-ave\times tree_{son}-k)\)
其中,sum为该子树原有的石油数,tree表示该子树的节点数,而k则为该子树中的ave+1的节点的个数
做完后再用g数组更新f
时间复杂度\(O(n^{3})\)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int t,sum,n,i,a,b,c,dec,ave,len,go[1001],to[1001],last[101],jz[1001],tree[101],cnt[101],w[101];
long long f[101][1001],g[1001];
void make(int x,int y,int z)
{
go[++len]=y;to[len]=last[x];jz[len]=z;last[x]=len;
}
void dp(int x,int fa)
{
f[x][0]=f[x][1]=0;
tree[x]=1;cnt[x]=w[x];
for (int k=last[x];k;k=to[k])
{
if (go[k]==fa) continue;
dp(go[k],x);
tree[x]+=tree[go[k]];cnt[x]+=cnt[go[k]];
}
for (int k=last[x];k;k=to[k])
{
memset(g,127,sizeof(g));
if (go[k]==fa) continue;
for (int j=0;j<=dec && j<=tree[x];j++)
{
for (int i=0;i<=j && i<=tree[go[k]];i++)
{
g[j]=min(g[j],f[x][j-i]+f[go[k]][i]+1ll*abs(cnt[go[k]]-tree[go[k]]*ave-i)*jz[k]);
}
}
for (int j=0;j<=dec && j<=tree[x];j++)
f[x][j]=g[j];
}
}
int main()
{
scanf("%d",&t);
for (;t;t--)
{
memset(last,0,sizeof(last));
scanf("%d",&n);sum=0;
for (i=1;i<=n;i++)
{
scanf("%d",&w[i]);
sum+=w[i];
}len=0;
for (i=1;i<n;i++)
{
scanf("%d%d%d",&a,&b,&c);
make(a,b,c);
make(b,a,c);
}
dec=sum%n;
ave=sum/n;
memset(f,127,sizeof(f));
dp(1,0);
printf("%lld\n",f[1][dec]);
}
}
要恶补网络流啊
jzoj 3567. 【GDKOI2014】石油储备计划的更多相关文章
- 【GDKOI2014】JZOJ2020年8月13日提高组T2 石油储备计划
[GDKOI2014]JZOJ2020年8月13日提高组T2 石油储备计划 题目 Description Input Output 对于每组数据,输出一个整数,表示达到"平衡"状态 ...
- 【时光回溯】【JZOJ3567】【GDKOI2014】石油储备计划
题目描述 输入 输出 对于每组数据,输出一个整数,表示达到"平衡"状态所需的最小代价. 样例输入 2 3 6 1 5 1 2 1 2 3 2 5 4 5 4 3 2 1 3 1 1 ...
- 帕累托分布(Pareto distributions)、马太效应
什么是帕累托分布 帕累托分布是以意大利经济学家维弗雷多·帕雷托命名的. 是从大量真实世界的现象中发现的幂次定律分布.这个分布在经济学以外,也被称为布拉德福分布. 帕累托因对意大利20%的人口拥有80% ...
- hbase官方文档(转)
FROM:http://www.just4e.com/hbase.html Apache HBase™ 参考指南 HBase 官方文档中文版 Copyright © 2012 Apache Soft ...
- HBase 官方文档
HBase 官方文档 Copyright © 2010 Apache Software Foundation, 盛大游戏-数据仓库团队-颜开(译) Revision History Revision ...
- HBase官方文档
HBase官方文档 目录 序 1. 入门 1.1. 介绍 1.2. 快速开始 2. Apache HBase (TM)配置 2.1. 基础条件 2.2. HBase 运行模式: 独立和分布式 2.3. ...
- 转载:HBASE配置说明
HBase 默认配置 ,原文:http://eclecl1314-163-com.iteye.com/blog/1474286 该文档是用hbase默认配置文件生成的,文件源是 hbase-defa ...
- hbase-site.xml 配置详解
hbase.rootdir 这个目录是region server的共享目录,用来持久化HBase.URL需要是'完全正确'的,还要包含文件系统的scheme.例如,要表示hdfs中的'/hbase'目 ...
- Hbase集群搭建及所有配置调优参数整理及API代码运行
最近为了方便开发,在自己的虚拟机上搭建了三节点的Hadoop集群与Hbase集群,hadoop集群的搭建与zookeeper集群这里就不再详细说明,原来的笔记中记录过.这里将hbase配置参数进行相应 ...
随机推荐
- C#LeetCode刷题之#257-二叉树的所有路径(Binary Tree Paths)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4082 访问. 给定一个二叉树,返回所有从根节点到叶子节点的路径. ...
- NeuralCoref: python的共指消解工具教程
转载地址 https://blog.csdn.net/blmoistawinde/article/details/81782971 共指消解 首先简要地说说共指消解是什么,有什么用处.假设机器正在阅读 ...
- 攻防世界-web(进阶)-Training-WWW-Robots
进行后台扫描,发现一个robots.txt,进入之后说存在fl0g.php,进入即可得flag. cyberpeace{73279bc0d3c28ba6da4d1d3d530e7c16}
- Netty多协议开发
HTTP协议开发 post与get的区别 1)get用于信息获取,post用于更新资源. 2)get数据放在请求行中,post数据放在请求体内. 3)get对数据长度有限制(2083字节),post没 ...
- Python定时任务轻量解决方案---Schedule
写后端的同学们可能都知道,工作中可能需要周期性执行一些任务,俗称定时任务.Linux环境下,可以借助于系统自带的crontab完成定时任务.但是很多时候,开发的同学们可能并没有权限去操作crontab ...
- 企业项目实战 .Net Core + Vue/Angular 分库分表日志系统五 | 完善业务自动创建数据库
教程预览 01 | 前言 02 | 简单的分库分表设计 03 | 控制反转搭配简单业务 04 | 强化设计方案 05 | 完善业务自动创建数据库 说明 这节来把基础的业务部分完善一下. 因为 IQue ...
- Java中的判断实例
.getClass().getName() 这是最常见的一种判断类型的方法 instanceof 用于判断 对象 是否为某个类的实例 Boolean值 各种is方法 isAnnotationPrese ...
- 【转】Echarts自适应
var myChart1 = echarts.init(document.getElementById('chart1')); var option = myChart1.getOption(); w ...
- shell脚本同步私人git仓库
前言 分别在个人电脑.个人服务器.码云三个地方建立了数据仓库用于保存自己的各种数据,通过git+shell进行数据同步. 此举不仅可以避免因存储损坏.版本更迭.数据误操作等因素带来的各种麻烦,也能实现 ...
- Java面试题(设计模式篇+Spring/Spring MVC篇)
设计模式 88.说一下你熟悉的设计模式? 自行熟悉. 89.简单工厂和抽象工厂有什么区别? 简单理解简单工厂:对 一个对象的创建进行封装.抽象工厂:对 一组对象的创建进行封装. 比如生产 陶瓷马 和 ...