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

优先购买

时间限制:1.0 s

内存限制:512.0 MB

题目描述

小 A 有M元预算。商店有N个商品,每个商品有商品名S 、价格P和优先级V三种属性,其中V为正整数,且V越小代表商品的优先级越高。

小 A 的购物策略为:

总是优先买优先级最高的东西;

如果有多个最高优先级商品,购买价格最低的;

如果有多个优先级最高且价格最低的商品,购买商品名字典序最小的。

小 A 想知道能购买哪些商品。

输入格式

第一行两个正整数 M,N,代表预算和商品数。

之后N行,每行一个商品,依次为Si,Pi,Vi ,代表第 个商品的商品名、价格、优先级。数据保证不存在两个名字相同的商品。

输出格式

按照字典序从小到大的顺序,输出所有购买商品的商品名。

输入样例

20 4
apple 6 8
bus 15 1
cab 1 10
water 4 8

输出样例

bus
cab
water

数据范围

对于所有测试点,保证商品名仅由小写字母组成且不存在两个相同的商品名。

更新时间:2026-07-21 15:01:11 |
【知识点】 CCF—GESP C++四级

相似题推荐

判断题

考虑用如下递推方式计算斐波那契数列,时间复杂度是 O(n)。

int n = 10; 
int f[20]; 
f[0] = 0; 
f[1] = 1; 
for (int i = 2; i <= n; i++) 
    f[i] = f[i - 1] + f[i - 2];
A.正确 B.错误
2026-07-22
判断题

小杨正在调试他的温度传感器程序,其中变量 x 保存当前温度。下面这段代码运行后,变量 x 的值变成

了 8 。

int x = 5; 
int *p = &x; 
*p = *p + 3;
A.正确 B.错误
2026-07-22
判断题

下面这段代码实现了选择排序算法。

void sort(int a[], int n) { 
    for (int i = 1; i < n; i++) { 
        int x = a[i]; 
        int j = i - 1; 
        while (j >= 0 && a[j] > x) { 
            a[j + 1] = a[j]; 
            j--; 
        } 
        a[j + 1] = x; 
    } 
}
A.正确 B.错误
2026-07-22
单选题

给定函数 climbStairs(int n) 的定义如下,则 climbStairs(5) 的返回的值是( )。

int climbStairs(int n) { 
    if(n <= 2) return n; 
    int a = 1, b = 2; 
    for(int i = 3; i <= n; i++) { 
        int temp = a + b; 
        a = b; 
        b = temp; 
    } 
    return b; 
}
A.

5

B.

8

C.

13

D.

18

2026-07-22
单选题

执行下面 C++ 程序,会输出( )。

int main() { 
    ofstream fout("test.txt"); 
    fout << "Happy" << endl; 
    fout << "New Year"; 
    fout.close(); 
    ifstream fin("test.txt"); 
    string s1, s2; 
    fin >> s1; 
    getline(fin, s2); 
    fin.close(); 
    cout << s1 << "|" << s2; 
    return 0; 
}
A.Happy|New Year B.Happy| New Year
C.HappyNew Year| D.Happy|
2026-07-22
公众号
客服 反馈
顶部