Shichikuji and Power Grid(最小生成树)

直接上题目传送门
上代码:只要能理解看成n+1个点的原因就可以按最小生成树做了。

/**
 * TODO Auther: by SR
 * Date: 2020-02-12 11:50:17
 * LastEditTime: 2020-02-12 13:51:32
 * ! 今日运势: 吉,无bug
 * TODO 本质上是最小生成树,但需要一些变通才能理解
**/
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstdio>
#include<string>
#include<memory.h>
using namespace std;
typedef long long ll;
const int MAXN = 2003;

struct edge{
    int from,to;
    ll weight;
    //TODO 好好学学
    inline bool operator < (const edge &a)const{
        return weight < a.weight;
    }
}que[MAXN*MAXN];

int x[MAXN], y[MAXN], c[MAXN], k[MAXN], fa[MAXN];
int find(const int a){
    return fa[a]==a ? a:fa[a]=find(fa[a]);
}

int main(){
/*
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
*/
	int n,m;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>x[i]>>y[i];
    }
    m=0;
    for(int i=1;i<=n;i++){
        cin>>c[i];
        que[++m]={0,i,1ll*c[i]};
    }
    for(int i=1;i<=n;i++){
        cin>>k[i];
    }
    for(int i=1;i<n;i++){
        for(int j=i+1;j<=n;j++){
            que[++m]={i,j,1ll*(k[i]+k[j])*(abs(x[i]-x[j])+abs(y[i]-y[j]))};
        }
    }
    sort(que+1,que+m+1);//kruscal
    for(int i=0;i<=n;i++){
        fa[i]=i;
    }
    int now=0, af, bf, ans[MAXN], v=0, e=0;
    edge link[MAXN];
    ll cost = 0;
    for(int i=1;i<=m;i++){
    //!注意 af bf只是用来判断是否在同一颗树上而已
        af=find(que[i].from);
        bf=find(que[i].to);
        if(af != bf){
            now++;
            fa[af]=bf;
            
            if(que[i].from==0){//!注意不是根节点为0
                ans[++v]=que[i].to;
            }
            else{
                link[++e]=que[i];
            }
            cost += que[i].weight;
        }
        if(now==n){
            break;
        }
    }

    cout<<cost<<"\n";
    cout<<v<<"\n";
    sort(ans+1, ans+v+1);
    for(int i=1; i<=v; i++){
        cout<<ans[i]<<" ";
    }
    cout<<"\n"<<e<<"\n";
    for(int i=1; i<=e; i++){
        cout<<link[i].from<<" "<<link[i].to<<"\n";
    }
	return 0;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Power BI Desktop是一款功能强大的数据分析和可视化工具。虽然它的主要用途是创建交互式报表和仪表板,但也可以将Power BI Desktop生成的内容转化为网页。 要将Power BI Desktop生成的报表和仪表板发布为网页,可以使用Power BI服务的发布功能。首先,需要将Power BI Desktop中的报表保存为PBIX文件。然后,登录Power BI服务,选择“发布”选项,并导入PBIX文件。 在Power BI服务中,可以对报表和仪表板进行编辑和定制。可以添加交互式控件,例如筛选器和刷选器,使用户能够根据自己的需求查看和分析数据。还可以设置数据刷新频率,确保报表显示的是最新的数据。 发布完成后,Power BI服务会为报表和仪表板生成一个唯一的网页链接。可以将这个链接分享给其他用户,他们只需点击链接即可访问并与报表进行交互。此外,还可以通过嵌入代码将报表嵌入到网站或应用程序中,使用户可以在自己的平台上查看和使用报表。 通过将Power BI Desktop生成的内容转化为网页,可以方便地与他人共享数据分析结果,并实现在线协作和实时交互。无需安装Power BI Desktop软件,其他用户即可通过浏览器访问报表,大大提高了数据可视化和分析的便捷性和灵活性。 ### 回答2: Power BI Desktop是一款功能强大的商业智能工具,可以帮助用户将数据转化为可视化报表和仪表盘。虽然Power BI Desktop本身是用来生成报表和仪表盘的,但它也可以将生成的报表和仪表盘发布到网页上供其他人访问。 首先,我们可以在Power BI Desktop中创建报表和仪表盘,通过对数据进行导入、转化和整理,可以利用Power BI Desktop提供的各种数据建模和可视化工具,创建出美观、直观的报表和仪表盘。 生成的报表和仪表盘可以通过Power BI Service发布到网页上。Power BI Service是一个在线平台,可以让用户将Power BI Desktop中创建的报表和仪表盘发布到云端。在Power BI Service中,用户可以将报表和仪表盘组织为不同的工作区,并控制每个工作区的访问权限。 发布到Power BI Service后,用户可以在网页上访问和查看报表和仪表盘。Power BI Service提供了一系列的在线分析和分享功能,用户可以在网页上进行数据分析、筛选和交互操作。同时,用户还可以使用Power BI Service的共享功能,将报表和仪表盘嵌入到其他网页或应用程序中,实现更多的数据展示和应用场景。 总而言之,通过Power BI Desktop和Power BI Service的配合,我们可以方便地将生成的报表和仪表盘发布到网页上,并在网页上进行数据分析和共享。这种方式能够提高数据的可视化效果,方便信息的共享和传播,帮助用户更好地理解和利用数据。 ### 回答3: Power BI Desktop 能够生成网页报表,将数据可视化和图表表达以网页的形式展示出来。下面是一些实现的步骤: 1.设计报表:在 Power BI Desktop 中,利用数据源连接、数据建模、报表设计等功能,设计和配置报表,包括选择合适的数据可视化图表、设置过滤器和关联数据等。 2.调整布局:根据需要,调整和配置报表的布局和样式,包括添加标题、调整图表大小、设置图标的颜色和字体等。 3.设置过滤器:通过设置过滤器,用户可以选择性地筛选和过滤报表中展示的数据,以满足不同的需求和分析目的。 4.生成网页报表:在 Power BI Desktop 中,选择“发布到 Web”选项,生成网页报表,并指定报表的访问权限和安全设置。 5.上传报表:将生成的网页报表上传至 Power BI 服务平台,以便在云端进行数据共享和在线访问。 6.管理和共享:在 Power BI 服务平台中,管理报表的访问权限和共享设置,可以设定公开访问或者限制特定人员访问。 7.在线访问和交互:访问者可以通过浏览器打开生成的报表链接,进行在线访问和交互。他们可以自由地选择过滤器和参数,查看不同的数据视图和图表表达,进行数据探索和分析。 通过以上步骤,使用 Power BI Desktop 可以实现将数据可视化的网页报表生成,并在线进行访问和交互。这样可以方便地共享数据分析和决策结果,并实现更加有效的数据沟通和理解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值