tyvj 1666 城市建设【最小生成树】
-Wall是个好东西,要不然我至死都看不出来我把(b[i]+b[j])写成了(b[i],b[j])……
还是来自lyd的题解:
(其实原来课件第一行式子写错了没有-1,然而我用sai手画了一个上去hhhh,板绘选手表示鼠绘真难)
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=100005;
long long n,a[N],b[N],h[N],tot,r,f[N],con;
long long ans;
char c[55][55];
struct qwe
{
long long u,v,w;
qwe(long long U=0,long long V=0,long long W=0)
{
u=U,v=V,w=W;
}
}e[N];
bool cmp(const qwe &a,const qwe &b)
{
return a.w<b.w;
}
long long zhao(long long x)
{
return x==f[x]?x:f[x]=zhao(f[x]);
}
int main()
{
scanf("%d",&n);
for(long long i=1;i<=n;i++)
scanf("%d",&b[i]);
for(long long i=1;i<=n;i++)
scanf("%d",&a[i]);
for(long long i=1;i<=n;i++)
scanf("%d",&h[i]);
for(long long i=1;i<=n;i++)
ans+=h[i]*(b[i]+a[i]-1)*(a[i]-1-b[i]+1)/2;//cerr<<ans<<endl;
for(long long i=1;i<=n;i++)
scanf("%s",c[i]+1);
for(long long i=1;i<=n;i++)
f[i]=i;
scanf("%d",&r);
for(long long i=1;i<=n;i++)
for(long long j=1;j<i;j++)
{
if(c[i][j]=='N')
{
if(h[i]>h[j])
e[++tot]=qwe(i,j,h[i]*b[j]*(a[i]-b[i])+h[j]*a[i]*(a[j]-b[j])+r*(b[i]+b[j]));
else
e[++tot]=qwe(i,j,h[j]*b[i]*(a[j]-b[j])+h[i]*a[j]*(a[i]-b[i])+r*(b[i]+b[j]));
}
else
{
if(h[i]>h[j])
ans+=h[i]*b[j]*(a[i]-b[i])+h[j]*a[i]*(a[j]-b[j]);
else
ans+=h[j]*b[i]*(a[j]-b[j])+h[i]*a[j]*(a[i]-b[i]);
long long fu=zhao(i),fv=zhao(j);
if(fu!=fv)
f[fu]=fv,con++;
}
}
sort(e+1,e+1+tot,cmp);
for(long long i=1;i<=tot&&con<n-1;i++)
{
long long fu=zhao(e[i].u),fv=zhao(e[i].v);
if(fu!=fv)
{
f[fu]=fv;
con++;
ans+=e[i].w;
}
}
printf("%lld\n",ans);
return 0;
}
tyvj 1666 城市建设【最小生成树】的更多相关文章
- BZOJ 2001: [Hnoi2010]City 城市建设
2001: [Hnoi2010]City 城市建设 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 1132 Solved: 555[Submit][ ...
- [HNOI2010]城市建设
[HNOI2010]城市建设 玄学cdq O(nlog^2n)的动态最小生成树 其实就是按照时间cdq分治+剪枝(剪掉一定出现和不可能出现的边) 处理[l,r]之间的修改以及修改之后的询问,不能确定是 ...
- 算法笔记_177:历届试题 城市建设(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 栋栋居住在一个繁华的C市中,然而,这个城市的道路大都年久失修.市长准备重新修一些路以方便市民,于是找到了栋栋,希望栋栋能帮助他. C市中有 ...
- 【LG3206】[HNOI2010]城市建设
[LG3206][HNOI2010]城市建设 题面 洛谷 题解 有一种又好想.码得又舒服的做法叫线段树分治+\(LCT\) 但是因为常数过大,无法跑过此题. 所以这里主要介绍另外一种玄学\(cdq\) ...
- 【HNOI2010】城市建设(对时间分治 & Kruskal)
Description \(n\) 个点 \(m\) 条边的带边权无向图.\(q\) 次操作,每次修改一条边的权值. 求每次修改后的最小生成树的边权和. Hint \(1\le n\le 2\time ...
- NKOJ-2936 城市建设
问题描述: PS国是一个拥有诸多城市的大国,国王Louis为城市的交通建设可谓绞尽脑汁.Louis可以在某些城市之间修建道路,在不同的城市之间修建道路需要不同的花费.Louis希望建造最少的道路使得国 ...
- RFID智能感知摄像机推进智慧城市建设步伐
随着智慧城市建设步伐的大力推进,各地的智慧城市建设取得了卓有成效的成果.物联网工程正在如火如荼地进行,顺应智慧城市物联网的发展大趋势,建设城市级的视频感知网,涉及治安.交通.教育等多方面综合传感应用, ...
- 【BZOJ2001】[HNOI2010]城市建设(CDQ分治,线段树分治)
[BZOJ2001][HNOI2010]城市建设(CDQ分治,线段树分治) 题面 BZOJ 洛谷 题解 好神仙啊这题.原来想做一直不会做(然而YCB神仙早就切了),今天来怒写一发. 很明显这个玩意换种 ...
- 【BZOJ2001】 [Hnoi2010]City 城市建设
BZOJ2001 [Hnoi2010]City 城市建设 Solution 我们考虑一下这个东西怎么求解? 思考无果...... 咦? 好像可以离线cdq,每一次判断一下如果这条边如果不选就直接删除, ...
随机推荐
- flex里InputText不能输入中文
最近做项目都没做任何的更新,今天突然遇到在flex里的InputText无法进行中文输入,晚上查找了下资料,很多原因说是flashplayer的一个BUG. 在网上找到两种解决办法: 1.会出现这种情 ...
- mysql查所有列名
查询该视图 information_schema.columns 该有的都有 desc information_schema.columns; select * from information_ ...
- [Bzoj3193][JLOI2013]地形生成 (排列组合 + DP)
3193: [JLOI2013]地形生成 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 459 Solved: 223[Submit][Status ...
- FTP操作类的使用
FTP(文件传输协议) FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序 ...
- FIREDAC保存ORACLE的BLOB字段数据
FIREDAC默认识别ORACLE的BLOB字段为HUGEBLOB,需要将HBLOB映射为BLOB,才可以保存ORACLE的BLOB字段的数据.
- 深信服:Weblogic集群负载均衡技术解决方案
深信服应用交付产品替换集群中的Master节点,以双机模式部署接入,为Cluster 内的服务器提供应用交换服务,结合健康检查和业务特点,提供十几种负载均衡算法组合,满足多种生产环境下的业务需求. ...
- iOS: 解决Asset Catalog Compile Error - TDDIstiller instance can only be distilled only one time的错误
执行命令:rm -rf /Users/<用户名>/Library/Developer/Xcode/DerivedData 然后重新编译项目即可.
- 【python】urllib2
urllib2.urlopen(url[, data][, timeout]) 请求url,获得请求数据,url参数可以是个String,也可以是个Request参数 没有data参数时为GET请求, ...
- 抓包工具Fiddler使用宝典之捕获手机报文
Fiddler 是通过代理来实现数据捕获的.对 Android 手机来说,也是通过将网络连接的代理指向 PC 机的 Fiddler port.来实现数据包的拦截. 以下,我以我的一次实践为例,向大家介 ...
- string 是值类型,还是引用类型(.net)[转]
转自http://hi.baidu.com/newfzks/item/b805f0f4edb0810dd89e7290 string 是值类型,还是引用类型(.net) 一. string 类型的用法 ...