codeforces Codeforces Round #597 (Div. 2) D. Shichikuji and Power Grid
#include<bits/stdc++.h>
using namespace std ;
int n;
struct City {
int id;
long long x,y; //坐标
long long cc,kk; //自建的花费,连线的花费
bool self;//是否建站
int fa;//连线的站
bool operator < (const City & a)const {
return cc<a.cc;
}
} c[];
int main() {
scanf("%d",&n);
for(int i=; i<=n; i++) {
c[i].id=i;//发电站编号
c[i].self=; //首先都默认是自建的
scanf("%lld%lld",&c[i].x,&c[i].y); //输入坐标
}
for(int i=; i<=n; i++) scanf("%lld",&c[i].cc); //初始都为自建
for(int i=; i<=n; i++) scanf("%lld",&c[i].kk);//连线
long long ans=,selfnum=;
for(int i=; i<=n; i++) {
sort(c+i,c++n);//大概就是要随时排序,每次找到最小的,每次排序要排除前一次的,防止多加费用
ans+=c[i].cc; //费用
if(c[i].self) selfnum++; //判断是否自建
for(int j=i+; j<=n; j++) {
long long cost=(c[i].kk+c[j].kk)*(abs(c[i].x-c[j].x)+abs(c[i].y-c[j].y));
if(cost<c[j].cc) {
c[j].cc=cost;
c[j].self=;//放弃自建,说要已经和别的站建立了联系
c[j].fa=c[i].id;
}
}
}
printf("%lld\n%lld\n",ans,selfnum);
for(int i=; i<=n; i++)
if(c[i].self) printf("%d ",c[i].id);
printf("\n%lld\n",n-selfnum);
for(int i=; i<=n; i++)
if(!c[i].self) printf("%d %d\n",c[i].id,c[i].fa);
return ;
}
/*首先假设每个点都自建,那么每个点的代价就是自建代价。
然后按照代价排序,用代价最小的点去更新后面那些点,
如果能更新用电代价,就把那些点连接到当前点。
然后进入下一轮循环,排除上一次代价最小的点,把剩下的点再次按照代价排序,
然后用这些点中代价最小的去更新其他的,以此类推。 */
codeforces Codeforces Round #597 (Div. 2) D. Shichikuji and Power Grid的更多相关文章
- Codeforces Round #597 (Div. 2) D. Shichikuji and Power Grid 最小生成树
D. Shichikuji and Power Grid</centerD.> Shichikuji is the new resident deity of the South Blac ...
- Codeforces Round #597 (Div. 2) D. Shichikuji and Power Grid
链接: https://codeforces.com/contest/1245/problem/D 题意: Shichikuji is the new resident deity of the So ...
- Codeforces Round #597 (Div. 2) D. Shichikuji and Power Grid 题解 最小生成树
题目链接:https://codeforces.com/contest/1245/problem/D 题目大意: 平面上有n座城市,第i座城市的坐标是 \(x[i], y[i]\) , 你现在要给n城 ...
- Codeforces Round #597 (Div. 2)
A - Good ol' Numbers Coloring 题意:有无穷个格子,给定 \(a,b\) ,按以下规则染色: \(0\) 号格子白色:当 \(i\) 为正整数, \(i\) 号格子当 \( ...
- Codeforces Beta Round #80 (Div. 2 Only)【ABCD】
Codeforces Beta Round #80 (Div. 2 Only) A Blackjack1 题意 一共52张扑克,A代表1或者11,2-10表示自己的数字,其他都表示10 现在你已经有一 ...
- Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】
Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...
- Codeforces Beta Round #79 (Div. 2 Only)
Codeforces Beta Round #79 (Div. 2 Only) http://codeforces.com/contest/102 A #include<bits/stdc++. ...
- Codeforces Beta Round #77 (Div. 2 Only)
Codeforces Beta Round #77 (Div. 2 Only) http://codeforces.com/contest/96 A #include<bits/stdc++.h ...
- Codeforces Beta Round #76 (Div. 2 Only)
Codeforces Beta Round #76 (Div. 2 Only) http://codeforces.com/contest/94 A #include<bits/stdc++.h ...
随机推荐
- 复习node中加载静态资源--用express+esj
不做解释,代码一看就懂 app.js import express from 'express' import config from './config' const app = express() ...
- hdu 1257 最少拦截系统 (最长上升子序列/贪心)
题意:某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭 ...
- PAT (Advanced Level) Practice 1055 The World's Richest (25 分) (结构体排序)
Forbes magazine publishes every year its list of billionaires based on the annual ranking of the wor ...
- vue.js事件传值之子组件传向父组件以及$emit的使用
在项目开发中,有时候会遇到一种需求比如是:在子组件中,通过一个事件,比如点击事件,去改变父组件中的某个值,下面来看看是怎么个流程 还是先截图目录结构 父组件为app.vue,components中的文 ...
- 0级搭建类009-Fedora 30 安装(F30) 公开
项目文档引子系列是根据项目原型,制作的测试实验文档,目的是为了提升项目过程中的实际动手能力,打造精品文档AskScuti. 项目文档引子系列目前不对外发布,仅作为博客记录.如学员在实际工作过程中需提前 ...
- c#快速热身
一.选择结构: 1. if选择结构 2. if-else选择结构 3. if-else if-else if-else多重if选择结构 4. if-if-else-else 嵌套if选择结构 5. s ...
- 题解【洛谷P1896】[SCOI2005]互不侵犯
题面 棋盘类状压 DP 经典题. 我们考虑设 \(dp_{i,j,s}\) 表示前 \(i\) 行已经摆了 \(j\) 个国王,且第 \(i\) 行国王摆放的状态为 \(s\) 的合法方案数. 转移的 ...
- ALSA lib编译
http://blog.sina.com.cn/s/blog_7d7e9d0f0101lqlp.html alsa lib: #!bin/sh rm -rf ./output/* mkdir -p ...
- GearHost稳定免费美国全能空间测试主机100M容量
GearHost是一家美国的全能空间服务商,提供有免费100M容量的空间,月流量1G,限制CPU使用5%,由于配置过小只适合于开发测试使用,不过主机支持的脚本众多,支持PHP.NET和node.js还 ...
- centos7在命令界面使用命令可以执行,但在jenkins中输入命令报Chrome has crashed.
问题:selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: ex ...