题解:CF1540A Great Graphs
1.题解:P2146 [NOI2015] 软件包管理器2.题解:P7020 [NWRRC2017] Boolean Satisfiability3.题解:P6614 蛋糕 Cake4.题解:UVA10503 The dominoes solitaire5.题解:AT_abc383_c [ABC383C] Humidifier 36.题解:AT_abc266_c [ABC266C] Convex Quadrilateral7.题解:AT_abc296_e [ABC296E] Transition Game8.题解:CF350C Bombs9.题解:B3832 [NICA #2] 回来吧我的小波10.题解:B3803 [NICA #1] 上大分11.题解:AT_abc236_f [ABC236F] Spices12.题解:CF626B Cards13.题解:CF603A Alternative Thinking14.题解:CF917A The Monster
15.题解:CF1540A Great Graphs
16.题解:AT_arc008_3 [ARC008C] THE☆たこ焼き祭り201217.题解:P6606 [Code+#7] 最小路径串18.题解:P2422 良好的感觉19.题解:P2032 扫描20.题解:P1160 队列安排21.题解:ABC395(A-E)22.题解:P3865 【模板】ST 表 && RMQ 问题23.题解:P2590 [ZJOI2008] 树的统计24.答案:牛客周赛 Round 83(A-E)25.题解:U540617 捡松果26.题解:P3390 【模板】矩阵快速幂 & 矩阵快速幂加速递推的应用思路27.题解:P11848 [TOIP 2023] 房屋推荐思路
CF 思维题。
因为我们要让边权值最小,所以可以利用贪心思想先将数组
然后再预处理出每一条边的权重。
其次我们来想一下如何处理答案,因为这道题说图中不能出现负环和重边,所以我们可以通过加反方向负边的方法来解决这道题。
因为对于一条边,这条边之后的所有点都会与这条边之前的点连负边,它们都会经过这条边,我们就可以把这条边之前的点数与这条边之后的点数相乘,得到所有经过这条边的负边数量。
得出核心代码。
for(int i = 2; i <= n; i++){ e[i] = d[i] - d[i - 1]; ans += e[i] * (n - i + 1) * (i - 1) - e[i];//记得加上原边的权值 }
AC 代码
#include<bits/stdc++.h> using namespace std; using ll = long long; const int N = 1e5+10; int d[N],e[N],n,ans,T; int main(){ // freopen("text.in","r",stdin); // freopen("text.out","w",stdout); ios::sync_with_stdio(0),cout.tie(0),cin.tie(0); cin>>T; while (T--){ cin>>n; ans = 0; for (int i = 1; i <= n; i++){ cin>>d[i]; } sort(d + 1, d + n + 1); for(int i = 2; i <= n; i++){ e[i] = d[i] - d[i - 1]; ans += e[i] * (n - i + 1) * (i - 1) - e[i];//记得加上原边的权值 } cout <<-ans<< '\n'; } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通