首页 > 其他分享 >题解:CF1540A Great Graphs

题解:CF1540A Great Graphs

时间:2024-12-20 21:09:08浏览次数:3  
标签:Great 负边 int 题解 cin Graphs ans 条边

思路

CF 思维题。

因为我们要让边权值最小,所以可以利用贪心思想先将数组 \(d\) 进行升序排序。

然后再预处理出每一条边的权重。

其次我们来想一下如何处理答案,因为这道题说图中不能出现负环和重边,所以我们可以通过加反方向负边的方法来解决这道题。

因为对于一条边,这条边之后的所有点都会与这条边之前的点连负边,它们都会经过这条边,我们就可以把这条边之前的点数与这条边之后的点数相乘,得到所有经过这条边的负边数量。

得出核心代码。

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;
}

标签:Great,负边,int,题解,cin,Graphs,ans,条边
From: https://www.cnblogs.com/zenoszheng/p/18619978

相关文章

  • 题解 - 趣味填空
    题目描述小华的寒假作业上,有这样一个趣味填空题:给出用等号连接的两个整数,如“1234=492”。当然,现在这个等式是不成立的。请你在等号左边整数中的某个位置尝试插入一个乘号,看有没有可能让等式成立。以上面的式子为例,如果写成1234=492,这样就正确了。现在请你编写一个程序......
  • Codeforces Global Round 28 / cf contest 2048 题解
    比赛链接A.KevinandCombinationLock观察操作难度(个人感觉)★☆☆☆☆注意到两个操作都不改变\(\%33\)的值,因此要求原数\(\%33==0\),显然这是充分的。B.KevinandPermutation观察操作难度(个人感觉)★☆☆☆☆一个点的"势力范围"是以\([p,p+k)\)为右端点的......
  • CF593B Anton and Lines 题解
    Tag:数学题目描述【题面大意】给定\(n\)条形如\(y=k_ix+b_i\)的直线,你需要判断是否存在两条直线\(a,b\),使\(a,b\)的交点\((x_0,y_0)\)满足\(x_1<x_0<x_2\)。【数据规模与约定】\(1\len\le10^5\),\(-10^6\lex_1,x_2,k_i,b_i\le10^6\)。数据保证对于每两条直线......
  • [JOISC2019] 聚会 题解
    随机化好题,但是不会证。考虑把树看成一条链,链的每个点上缀了一棵树。那么先随机出两个点\(x,y\)(实际上随机一个点,另一个点固定似乎更好?),然后对于当前这棵树上的任意点\(z\),都让他进行一次询问,答案为\(o=Q(x,y,z)\)。那么当\(o=z\)时,显然\(z\)在链上,否则\(z\)在\(o\)......
  • 博弈论+ybt题解
    NIM游戏及其证明题目描述即为T1,不多赘述有向图游戏及SG函数而对于由\(n\)个有向图游戏组成的组合游戏,设它们的起点分别为\(S_1,S_2,\ldots,S_n\),则有定理:当且仅当\(\text{SG}(s_1)\oplus\text{SG}(s_2)\oplus\ldots\oplus\text{SG}(s_n)\neq0\)时,这个游戏是先手......
  • (自用)[USACO2023-JAN-Bronze] T1 LEADERS 题解
    题目描述农夫约翰有\(N(2≤N≤10^5)\)头奶牛,每一头奶牛的品种是更赛牛G或荷斯坦牛H中的一种。每一头奶牛都有一个名单,第\(i\)头奶牛的名单上记录了从第\(i\)头奶牛(即自己)到第\(E_i(i≤E_i≤N)\)头奶牛的连续所有奶牛。每一种奶牛都有且仅有一位“领导者”,对于某一头牛......
  • [CF494D] Birthday 题解
    首先\(S(u)\)显然是\(u\)的子树。假如\(u\)是定点,问题转化为区间求平方和,十分简单。于是我们用线段树维护区间平方和,支持区间加,然后离线问题,在\(u\)的位置处理即可。线段树从\(fa\)转移到\(u\)是极度简单的。时间复杂度\(O(n\logn)\)。#include<bits/stdc++.h>......
  • Luogu P10838 『FLA - I』庭中有奇树 题解 [ 绿 ] [ 二分 ] [ 双指针 ] [ 树 ]
    庭中有奇树:很多算法揉在一起的好题。转化题意因为要封锁\(m\)条路径,根据贪心思想,他一定会封锁最短的\(m\)条路径。所以我们能走的最短传送路径就是最短的第\(m+1\)条路径。这应该是本题最关键的一步转化了,几个月前降智了根本没想到这个。做法求第\(m+1\)短的路径,这个......
  • 组合数学+ybt题解
    加法原理乘法原理排列数从\(n\)个数中任取\(m\)个元素的排列的方案数,表示为\(A^m_n=\frac{n!}{(n-m)!}\)\(0!=1\)全排列\(A^n_n\)组合数从\(n\)个元素中取出\(m\)个元素的组合的个数,表示为\(\dbinom{n}{m}=\frac{A^m_n}{m!}=\frac{n!}{m!(n-m)!}\)如何理解呢?......
  • P3316 [SDOI2014] 里面还是外面 题解
    实现有些傻瓜,喜提时空双最劣解。首先要判断一个点是否在多边形内,一个比较好的方法是从这个点向上引一条射线,若和奇数条边相交就在多边形内,否则在多边形外。二维信息,考虑用树套树维护。把多边形的每一条边都扔到它\(x\)坐标范围的线段树节点里,即线段树节点\((l,r)\)里面维护......