CCF GESP 2024年12月认证 C++ 7级

编程题
共 2 道 每题 25 分 共计 50 分
第 1 题
武器购买
时间限制:1s 内存限制:512MB

题目描述

商店里有 $n$ 个武器,第 $i$ 个武器的强度为 $p_i$,花费为 $c_i$。

小杨想要购买一些武器,满足这些武器的总强度不小于 $P$,总花费不超过 $Q$,小杨想知道是否存在满足条件的购买方案,如果有,最少花费又是多少。

输入格式

第一行包含一个正整数 $t$,代表测试数据组数。

对于每组测试数据,第一行包含三个正整数 $n,P,Q$,含义如题面所示。

之后 $n$ 行,每行包含两个正整数 $p_i,c_i$,代表武器的强度和花费。

输出格式

对于每组测试数据,如果存在满足条件的购买方案,输出最少花费,否则输出 -1

样例说明

样例 1

输入:
3
3 2 3
1 2
1 2
2 3
3 3 4
1 2
1 2
2 3
3 1000 1000
1 2
1 2
2 3
输出:
3
-1
-1

数据范围

对于全部数据,保证有 $1\leq t\leq 10$,$1\leq n\leq 100$,$1\leq p_i,c_i,P,Q\leq 5\times 10^4$。

第 2 题
燃烧
时间限制:1s 内存限制:512MB

题目描述

小杨有一棵包含 $n$ 个节点的树,其中节点的编号从 $1$ 到 $n$。节点 $i$ 的权值为 $a_i$。

小杨可以选择一个初始节点引燃,每个燃烧的节点会将其相邻节点中权值严格小于自身权值的在节点间扩散直到不会有新的节点被引燃。

小杨想知道在合理选择初始节点的情况下,最多可以燃烧多少个节点。

输入格式

第一行包含一个正整数 $n$,表示节点数量。

第二行包含 $n$ 个正整数 $a_1,a_2,\dots,a_n$,代表节点权值。

之后 $n-1$ 行,每行包含两个正整数 $u_i,v_i$,代表存在一条连接节点 $u_i$ 和 $v_i$ 的边。

输出格式

输出一个正整数,代表最多燃烧的节点个数。

样例说明

样例 1

输入:
5
6 2 3 4 5
1 2
2 3
2 5
1 4
输出:
3

数据范围

对于全部数据,保证有 $1\leq n\leq 10^5$,$1\leq a_i\leq 10^6$。

编程题部分已到底了。