打卡信奥刷题(3164)用C++实现信奥题 P7840 「C.E.L.U-03」重构
P7840 「C.E.L.U-03」重构题目背景罗司机最近发现服务器运行速度很慢于是他准备重构整个服务器的网络以提升效率。题目描述罗司机有nnn台服务器每个服务器有一个繁忙度viv_ivi。罗司机将用n−1n-1n−1条网络将它们连接在一起于是每台服务器有一个连接网络数量did_idi。这个服务器网络运行的总时间是∑i1ndi2vi\sum\limits_{i1}^nd_i^2v_ii1∑ndi2vi。请你最小化这个值。输入格式第一行一个数nnn。第二行nnn个数第iii个数代表viv_ivi。输出格式第一行一个数答案。输入输出样例 #1输入 #14 2 3 4 4输出 #128说明/提示样例解释连接1−2,1−4,2−31-2,1-4,2-31−2,1−4,2−3三条边度数分别为2,2,1,12,2,1,12,2,1,1。数据编号nnn特殊性质111≤5\le5≤5无2∼32\sim 32∼3≤300\le300≤300无4∼54\sim 54∼5≤3×103\le3\times10^3≤3×103无666≤3×104\le3\times10^4≤3×104所有viv_ivi相等7∼87\sim 87∼8≤3×104\le3\times10^4≤3×104无9∼109\sim 109∼10≤3×105\le3\times10^5≤3×105无对于100%100\%100%的数据1≤n≤3×105,1≤vi≤1031\leq n\le3\times10^5,1\leq v_i\le10^31≤n≤3×105,1≤vi≤103。C实现#includebits/stdc.husingnamespacestd;typedeflonglongll;constintmaxn3e55;structque{intw,v;que(intW,intV){wW,vV;}friendbooloperator(que a,que b){return(2*a.w1)*a.v(2*b.w1)*b.v;//按照增加的费用排序}};intn,v[maxn];ll ans;priority_queuequeq;intmain(){scanf(%d,n);for(registerinti1;in;i)scanf(%d,v[i]),ansv[i],q.push(que(1,v[i]));for(registerinti1;in-1;i){que uq.top();q.pop();ans(2*u.w1)*u.v;if(u.wn-1)q.push(que(u.w1,u.v));}printf(%lld,ans);return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2554913.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!