题解:cheering up the cows[USACO2008 NOV]

本文介绍了一种利用Kruskal算法解决特定类型的最小生成树问题的方法。通过将每条路径的值加倍并加上相连节点的值,可以找到使得总代价最小的方案。选择代价最小的节点作为根节点。

https://www.luogu.org/problem/show?pid=2916

容易证明:

1.生成树上每条路径走两遍;
2.每一个节点走的次数为它所连的边的数目,根节点增加一次。
那么一个很自然的想法就产生了:
把每一条路径的值*2再加上它所连节点的值,跑一遍kruskal就行,把最小的节点作为根。
好吧,水题一道,贴代码:

const maxn=10001;
      maxp=1000002;
type gragh=record
      x,y,l:longint;
      end;
var e:array[0..maxp] of gragh;
    c,father:array[0..maxn]of longint;
    i,j,n,p,k,u,v,ans:longint;
procedure qsort(l,r:longint);
var tmp:gragh;
    mid,j,i:longint;
begin
    i:=l;j:=r;mid:=e[(l+r)>>1].l;
    while i<j do
    begin
        while e[i].l<mid do inc(i);
        while e[j].l>mid do dec(j);
        if i<=j then
        begin
            tmp:=e[i];e[i]:=e[j];e[j]:=tmp;
            inc(i);dec(j);
        end;
    end;
    if l<j then qsort(l,j);
    if i<r then qsort(i,r);
end;
function find(i:longint):longint;
begin
    if father[i]<>i then
          father[i]:=find(father[i]);
    exit(father[i]);
end;
begin
    //assign(input,'cheer.in');assign(output,'cheer.out');
    //reset(input);rewrite(output);
    readln(n,p);ans:=maxlongint;
    for i:=1 to n do
    begin
      readln(c[i]);
      if ans>c[i] then ans:=c[i];
    end;
    for i:=1 to p do
    begin
        readln(e[i].x,e[i].y,e[i].l);
        e[i].l:=e[i].l*2+c[e[i].x]+c[e[i].y];
    end;
    qsort(1,p);k:=0;
    for i:=1 to n do father[i]:=i;
    for i:=1 to p do
    begin
        if k=n-1 then break;
        u:=e[i].x;v:=e[i].y;
        if find(u)<>find(v) then
        begin
            inc(k);//writeln(u,' ',v);
            inc(ans,e[i].l);
            father[find(u)]:=find(v);
        end;
    end;
    writeln(ans);
    //close(input);close(output);
end.  
考虑可再生能源出力不确定性的商业园区用户需求响应策略(Matlab代码实现)内容概要:本文围绕“考虑可再生能源出力不确定性的商业园区用户需求响应策略”展开,结合Matlab代码实现,研究在可再生能源(如风电、光伏)出力具有不确定性的背景下,商业园区如何制定有效的需求响应策略以优化能源调度和提升系统经济性。文中可能涉及不确定性建模(如场景生成与缩减)、优化模型构建(如随机规划、鲁棒优化)以及需求响应机制设计(如价格型、激励型),并通过Matlab仿真验证所提策略的有效性。此外,文档还列举了大量相关的电力系统、综合能源系统优化调度案例与代码资源,涵盖微电网调度、储能配置、负荷预测等多个方向,形成一个完整的科研支持体系。; 适合人群:具备一定电力系统、优化理论和Matlab编程基础的研究生、科研人员及从事能源系统规划与运行的工程技术人员。; 使用场景及目标:①学习如何建模可再生能源的不确定性并应用于需求响应优化;②掌握使用Matlab进行商业园区能源系统仿真与优化调度的方法;③复现论文结果或开展相关课题研究,提升科研效率与创新能力。; 阅读建议:建议结合文中提供的Matlab代码实例,逐步理解模型构建与求解过程,重点关注不确定性处理方法与需求响应机制的设计逻辑,同时可参考文档中列出的其他资源进行扩展学习与交叉验证。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值