【BZOJ】3712: [PA2014]Fiolki
http://www.lydsy.com/JudgeOnline/problem.php?id=3712
题意:n个瓶子,第i个瓶子里又g[i]克物质。m次操作,第i次操作把第a[i]个瓶子的东西全部倒到第b[i]个瓶子里(保证之后不出现a[i])。k种反应,其中c[i]和d[i]反应,而且如果一个瓶子里有多种反应则优先反应靠前的。每次反应对答案贡献为min(g[i], g[i])*2(m<n<=200000, k<=500000)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=200005, M=200005, nQ=500005;
ll ans;
int n, m, K, ihead[N+M], cnt, pos[N], g[N], dep[N+M], f[N+M][20], tot;
struct E { int next, to; } e[(N+M)<<1];
struct Q { int x, y, ff, dep, id; } q[nQ];
bool cmp(const Q &a, const Q &b) {
return a.dep==b.dep?a.id<b.id:a.dep>b.dep;
}
void add(int x, int y) {
e[++cnt]=(E){ihead[x], y}; ihead[x]=cnt;
e[++cnt]=(E){ihead[y], x}; ihead[y]=cnt;
}
void dfs(int x) {
for(int i=1; i<=19; ++i) f[x][i]=f[f[x][i-1]][i-1];
for(int i=ihead[x]; i; i=e[i].next) if(e[i].to!=f[x][0]) { f[e[i].to][0]=x; dep[e[i].to]=dep[x]+1; dfs(e[i].to); }
}
int lca(int x, int y) {
if(dep[x]<dep[y]) swap(x, y);
int d=dep[x]-dep[y];
for(int i=19; i>=0; --i) if((d>>i)&1) x=f[x][i];
if(x==y) return x;
for(int i=19; i>=0; --i) if(f[x][i]!=f[y][i]) x=f[x][i], y=f[y][i];
return f[x][0];
}
int main() {
scanf("%d%d%d", &n, &m, &K);
for(int i=1; i<=n; ++i) pos[i]=i;
for(int i=1; i<=n; ++i) scanf("%d", &g[i]);
for(int i=1; i<=m; ++i) { int a, b; scanf("%d%d", &a, &b); int ff=n+i; add(pos[a], ff); add(pos[b], ff); pos[b]=ff; }
for(int i=n+m; i>=1; --i) if(!f[i][0]) dfs(i);
for(int i=1; i<=K; ++i) { int a, b, ff; scanf("%d%d", &a, &b); ff=lca(a, b); if(!ff) continue; q[tot++]=(Q){a, b, ff, dep[ff], tot}; }
sort(q, q+tot, cmp);
for(int i=0; i<tot; ++i) {
int x=q[i].x, y=q[i].y;
int dec=min(g[x], g[y]);
g[x]-=dec; g[y]-=dec; ans+=dec;
}
printf("%lld\n", ans<<1);
return 0;
}
居然是图论题啊orzzzzzzzzzzzz
好题啊orzzzzzzzzz
首先我们每次新建一个节点表示合并的两个瓶子(而题目中的条件表明了这是一个森林!),然后发现询问的话其实就是两个瓶子的lca!
于是按lca的深度及其时间权值排序一下即可。
【BZOJ】3712: [PA2014]Fiolki的更多相关文章
- 【BZOJ】3714: [PA2014]Kuglarz
题意 \(n(1 \le n \le 2000)\)个数每个数是\(0\)或\(1\),现在可以花费\(c_{i, j}\)知道\([i, j]\)的奇偶性,问将所有数都找出来的最小花费. 分析 如果 ...
- 【BZOJ】3709: [PA2014]Bohater(贪心)
http://www.lydsy.com/JudgeOnline/problem.php?id=3709 很水的题...但是由于脑洞小..漏想了一种情况.. 首先显然能补血的先杀.. 然后杀完后从补血 ...
- BZOJ 3712: [PA2014]Fiolki 倍增+想法
3712: [PA2014]Fiolki Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 437 Solved: 115[Submit][Status ...
- 【BZOJ】3052: [wc2013]糖果公园
http://www.lydsy.com/JudgeOnline/problem.php?id=3052 题意:n个带颜色的点(m种),q次询问,每次询问x到y的路径上sum{w[次数]*v[颜色]} ...
- 【BZOJ】3319: 黑白树
http://www.lydsy.com/JudgeOnline/problem.php?id=3319 题意:给一棵n节点的树(n<=1e6),m个操作(m<=1e6),每次操作有两种: ...
- 【BZOJ】3319: 黑白树(并查集+特殊的技巧/-树链剖分+线段树)
http://www.lydsy.com/JudgeOnline/problem.php?id=3319 以为是模板题就复习了下hld............................. 然后n ...
- 【BZOJ】1013: [JSOI2008]球形空间产生器sphere
[BZOJ]1013: [JSOI2008]球形空间产生器sphere 题意:给n+1个n维的点的坐标,要你求出一个到这n+1个点距离相等的点的坐标: 思路:高斯消元即第i个点和第i+1个点处理出一个 ...
- 【BZOJ】1002:轮状病毒(基尔霍夫矩阵【附公式推导】或打表)
Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图 ...
- 【BZOJ】【3083】遥远的国度
树链剖分/dfs序 其实过了[BZOJ][4034][HAOI2015]T2以后就好搞了…… 链修改+子树查询+换根 其实静态树的换根直接树链剖分就可以搞了…… 因为其实只有一样变了:子树 如果roo ...
随机推荐
- Eclipse+CDT+GDB调试android NDK程序(转)
Eclipse+CDT+gdb调试android ndk程序 先介绍一下开发环境,在这个环境下,up主保证是没有问题的. ubuntu 11.10 eclipse 3.7(indego) for ja ...
- Codeforces Round #369 (Div. 2) D. Directed Roads dfs求某个联通块的在环上的点的数量
D. Directed Roads ZS the Coder and Chris the Baboon has explored Udayland for quite some time. The ...
- Activity活动
自定义一个类继承Activity类后结构已经很好了 提供了finish()来销毁活动 要记得注册
- MySQL5.7中新增的JSON类型的使用方法
创建表json_test: CREATE TABLE json_test(id INT(11) AUTO_INCREMENT PRIMARY KEY,person_desc JSON)ENGINE I ...
- Emacs 之窗口管理
// */ // ]]> Emacs 之窗口管理 Table of Contents 1. Emacs 窗口相关 1.1. Emacs 里调整 window 大小 1.2. Emacs winn ...
- Struts2零配置介绍(约定访问)
从struts2.1开始,struts2 引入了Convention插件来支持零配置,使用约定无需struts.xml或者Annotation配置 需要 如下四个JAR包 插件会自动搜索如下类 act ...
- TortoiseSVN菜单项功能说明
TortoiseSVN是windows下其中一个非常优秀的SVN客户端工具.通过使用它,我们可以可视化的管理我们的版本库.不过由于它只是一个客户端,所以它不能对版本库进行权限管理. TortoiseS ...
- mybatis中foreach的用法(转)
foreach一共有三种类型,分别为List,[](array),Map三种. foreach属性 属性 描述 item 循环体中的具体对象.支持属性的点路径访问,如item.age,item.inf ...
- 安装PyMysql的基本步骤
X:\Users\**>c: c:\>cd python c:\Python>python ez_setup.py Downloading https://pypi.io/packa ...
- express-12 Cookie与会话
简介 HTTP是无状态协议.当浏览器中加载页面,然后转到同一网站的另一页面时,服务器和浏览器都没有任何内在的方法可以认识到,这是同一浏览器访问同一网站.换一种说法,Web工作的方式就是在每个HTTP请 ...