[ USACO 2001 OPEN ] 地震
\(\\\)
Description
给出一张 \(n\) 个点 \(m\) 条边的无向图,现在要建一棵生成树。
每条边都有消耗的时间 \(t_i\),也有建造的代价 \(w_i\) 。
最后总金给了 \(f\) 元,求单位时间的利润最大能是多大。
总时间 \(=\) 建造每一条边的时间之和
总利润 \(=f-\) 建造每一条边的代价之和。
- \(n\le 400,m\le 10^4,f,w_i,t_i\le 2\times 10^9\)
\(\\\)
Solution
\(01\) 分数规划。二分单位利润可能的值。
假设 \(x\) 为当前二分的利润,\(E\) 为一种合法的生成树的边集。
\]
简单化简(注意把 \(x\) 放进求和号这一步)
\]
这个显然就是一个最小生成树的形式了。
每次重新计算每一条边的边权,然后 \(MST\) 验证一下和是否小于 \(f\) 。
千万不要忘了更新的时候是重新排过序的,如果跑 \(MST\) 用的边集与原边是独立的,记得更新每条边的端点。
\(\\\)
Code
#include<cmath>
#include<cstdio>
#include<cctype>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 100010
#define R register
#define gc getchar
using namespace std;
inline int rd(){
int x=0; bool f=0; char c=gc();
while(!isdigit(c)){if(c=='-')f=1;c=gc();}
while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=gc();}
return f?-x:x;
}
int n,m,tot,hd[N],p[N],ans[N];
struct edge{int to,nxt;}e[N<<1];
inline void add(int u,int v){
e[++tot].to=v; e[tot].nxt=hd[u]; hd[u]=tot;
}
struct BIT{
int c[N];
inline int lowbit(int x){return x&-x;}
inline void add(int p,int x){for(;p<=n;p+=lowbit(p))c[p]+=x;}
inline int sum(int p){
int res=0;
for(;p;p-=lowbit(p)) res+=c[p];
return res;
}
}bit;
inline void dfs(int u,int fa){
ans[p[u]]=bit.sum(p[u]);
bit.add(p[u],1);
for(R int i=hd[u],v;i;i=e[i].nxt)
if((v=e[i].to)!=fa) dfs(v,u);
bit.add(p[u],-1);
}
int main(){
n=rd();
for(R int i=1,u,v;i<n;++i){
u=rd(); v=rd(); add(u,v); add(v,u);
}
for(R int i=1;i<=n;++i) p[rd()]=i;
dfs(1,0);
for(R int i=1;i<=n;++i) printf("%d\n",ans[i]);
return 0;
}
[ USACO 2001 OPEN ] 地震的更多相关文章
- Luogu 4951 [USACO 2001 OPEN]地震
水个博客玩. $01$分数规划. 题目要求$\frac{F - \sum_{i = 1}^{n}C_i}{T_i}$最大,设$\frac{F - \sum_{i}C_i}{T_i} \geq e$,移 ...
- USACO 2001 OPEN
第1题 绿组. 奶牛接力赛[relay] 题目描述 农夫约翰已经为一次赛跑选出了K(2≤K≤40)头牛组成了一支接力队.赛跑在农夫约翰所拥有的农场上进行,农场的编号为1到Ⅳf4≤Ⅳ< 800), ...
- Cow Relays 【优先队列优化的BFS】USACO 2001 Open
Cow Relays Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Tota ...
- USACO 2001 OPEN earthquake /// 最优比例生成树
题目大意: https://www.cnblogs.com/forever97/p/3603572.html 讲解:https://www.jianshu.com/p/d40a740a527e 题解: ...
- [USACO]地震 (二分答案+最优比率生成树详解)
题面:[USACO 2001 OPEN]地震 题目描述: 一场地震把约翰家的牧场摧毁了, 坚强的约翰决心重建家园. 约翰已经重建了N个牧场,现在他希望能修建一些道路把它们连接起来.研究地形之后,约翰发 ...
- usaco 地震 && 奶牛观光
Usaco 地震: Description 一场地震把约翰家的牧场摧毁了,坚强的约翰决心重建家园.约翰已经重建了N个牧场, 现在他希望能修建一些道路把它们连接起来.研究地形之后,约翰发现可供修建的道路 ...
- bzoj usaco 金组水题题解(1)
UPD:我真不是想骗访问量TAT..一开始没注意总长度写着写着网页崩了王仓(其实中午的时候就时常开始卡了= =)....损失了2h(幸好长一点的都单独开了一篇)....吓得赶紧分成两坨....TAT. ...
- [USACO 08JAN]Telephone Lines
Description Farmer John wants to set up a telephone line at his farm. Unfortunately, the phone compa ...
- USACO Telephone Lines
洛谷 P1948 [USACO08JAN]电话线Telephone Lines https://www.luogu.org/problem/P1948 JDOJ 2556: USACO 2008 Ja ...
随机推荐
- 技术杂记之:在阿里云centos7上部署JDK MYSQL TOMCAT
今日小编闲来无事,乘着公司新项目即将上线之际,在阿里云上整了一台centos作为测试机.原本以为一个小时搞定,结果还是花了一点小小时间.不管怎么说,记录下来,给各位小白当成课后甜点吧. 价格 先上价格 ...
- 中高级前端应该必会,js实现事件委托代理、切换样式、元素获取相对于文档位置等
1.介绍 随着组件开发大流行,现在三大框架已经基本占领了整个前端. 这时候,我们要是引入一个 jq 是不是先得你的项目非常臃肿,jq 也很不适合. 这个时候,你就需要来增加你 js 的功底. 2.各种 ...
- linux程序命令行选项的3种风格:unix、gnu、x toolkit
In Unix-like systems, the ASCII hyphen-minus is commonly used to specify options. The character is u ...
- git锁和钩子以及图形化界面
1.锁机制 Locking Options 严格锁(strict locking):一个时刻,只有一个人可以占用资源. 乐观锁(optimistic locking):允许多个人同时修改同一文件.乐观 ...
- canvas 插件
http://www.jq22.com/yanshi2217 参考这个站 发现一些比较有用的canvas插件: 线形图插件:jquery.sparkline 2.1.1 excanvas 环形图,饼状 ...
- 重置网络命令win7
开始→运行→输入:CMD 点击确定(或按回车键),打开命令提示符窗口. 在命令提示符中输入:netsh winsock reset (按回车键执行命令) 稍后,会有成功的提示:成功地重置Winsock ...
- 怎样在Swift中使用NSError
步骤一:声明NSError变量. 一定要加"?",不加或者加"!"都不行.由于使用了optional,所以要用var而不用let. var error: NSE ...
- web面试集合
在JavaScript中,添加到页面上的事件处理程序数量将直接关系到页面的整体运行性能.导致这一问题的原因是多方面的.首先,每个函数都是对象,都会占用内存:内存中的对象越多,性能就越差.其次,必须事先 ...
- dm385和8127的区别
DM385/DM8127在ITS智能交通中的应用分析德州仪器(TI)自推出DM385和DM8127视频处理器在业界反响很大特别是深圳安博会上展出的1080P60帧高清效果之后很多龙头企业也跃 ...
- java poi excel导入模板设置下拉框
import org.apache.poi.hssf.usermodel.DVConstraint; import org.apache.poi.hssf.usermodel.HSSFCell; im ...