万卷网 > 题目详情
题型:编程题

商品交易

时间限制:1.0 s

内存限制:128.0 MB

问题描述

市场上共有N种商品,编号从0至N-1,其中,第i种商品价值vi元。

现在共有M个商人,编号从0至M-1。在第j个商人这,你可以使用第xj种商品交换第yj种商品。每个商人都会按照商品价值进行交易,具体来说,如果vxj>vyj,他将会付给你vyj-vxj元钱;否则,那么你需要付给商人vxj-vyj元钱。除此之外,每次交易商人还会收取1元作为手续费,不论交易商品的价值孰高孰低。

你现在拥有商品a,并希望通过一些交换来获得商品b。请问你至少要花费多少钱?(当然,这个最小花费也可能是负数,这表示你可以在完成目标的同时赚取一些钱。)

输入描述

第一行四个整数N,M,a,b,分别表示商品的数量、商人的数量、你持有的商品以及你希望获得的商品。保证0≤a,b<N,保证 a≠b。

第二行N个用单个空格隔开的正整数v0,v1,…,vN-1,依次表示每种商品的价值。保证1≤vi≤109。

接下来M行,每行两个整数xj,yj,表示第j个商人愿意使用第xj种商品交换第yj种商品。保证0≤xj,yj<N,保证xj≠yj。

输出描述

输出一行一个整数,表示最少的花费。特别地,如果无法通过交换换取商品b,请输出 No solution

特别提醒

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。


样例输入 1

3 5 0 2
1 2 4
1 0
2 0
0 1
2 1
1 2

样例输出 1

5

样例解释 1

可以先找2号商人,花2-1=1元的差价以及1元手续费换得商品1,再找4号商人,花4-2=2元的差价以及1元手续费换得商品 。总计花费1+1+2+1=5元。


样例输入 2

3 3 0 2
100 2 4
0 1
1 2
0 2

样例输出 2

-95

样例解释 2

可以找2号商人,直接换得商品2的同时,赚取100-4=96元差价,再支付1元手续费,净赚95元。

也可以先找0号商人换取商品1,再找1号商人换取商品2,不过这样只能赚94元。


样例输入 3

4 4 3 0
1 2 3 4
1 0
0 1
3 2
2 3

样例输出 3

No solution

数据规模

对于30%的测试点,保证N≤10,M≤20。

对于70%的测试点,保证N≤103,M≤104。

对于100%的测试点,保证N≤105,M≤2×105。

更新时间:2023-12-28 13:47:53 |
【知识点】 CCF—GESP C++七级

相似题推荐

单选题

下面关于二叉树的说法正确的是( )。

A.

任意二叉树的中序遍历与后序遍历必定不相同。

B.

对任意二叉树,若已知先序遍历与后序遍历,则该二叉树唯一确定。

C.

若二叉树有 个结点,根节点高度为 ,则其高度满足: [log2(n+1)]<=h<=n。

D.

在二叉树的先序遍历中,根后紧跟的结点一定是根的左孩子。

2026-07-27
判断题

选择排序是一种不稳定的排序算法,而冒泡排序是一种稳定的排序算法。2025.12-7

A.正确 B.错误
2026-07-27
单选题

假设一个算法时间复杂度的递推式是 ,和T(0) = 1 ,那么这个算法的时间复杂度是(  )。

A.

B.

C.

O(n2)

D.

O(n2 log n)

2026-07-27
单选题

一棵深度为6(根节点深度为1)的完全二叉树,节点总数最少有( )。

A.

31

B.

32

C.

63

D.

64

2026-07-27
单选题

下面程序中,函数 query 的时间复杂度是( )。

#include <iostream> 

int query(int n, int *a, int x) { 
    int l = 0, r = n; 
    while (l < r) { 
        int mid = l + (r - l) / 2; 
        if (a[mid] >= x) 
            r = mid; 
        else 
            l = mid + 1; 
    } 
    if (l == n) 
        return -1; 
    return l; 
} 

int main() { 
    int n = 10; 
    int x = 3; 
    int num[] = {1, 2, 2, 3, 3, 4, 5, 5, 6, 7}; 
    std::cout << query(n, num, x) << "\n"; 
    return 0; 
}
A.

O(1)

B.

O(log n)

C.

O(n)

D.

O(n log n)

2026-07-27
公众号
客服 反馈
顶部