1 条题解

  • 0
    @ 2025-8-24 21:14:23

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Maxmilite
    **

    搬运于2025-08-24 21:14:22,当前版本为作者最后更新于2022-11-27 14:23:08,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    B3682 [语言月赛202211] Jewellery 题解

    Source & Knowledge

    2022 年 11 月语言月赛,由洛谷网校入门计划/基础计划提供。

    文字题解

    题目大意

    给定 nn 种道具的名称以及品质。给定 kk 次抽奖情况,除第一次抽中外其余次抽中时均得到道具品质对应碎片数量的碎片。求最终获得碎片的数量。

    解析

    首先,可以统计每种道具的抽中的次数。我们使用一个长度为 nn 的数组 cc 记录。

    对于第 ii 种道具,我们暂且使用 vv 来表示其品质所对应的碎片数量。那么,第 ii 种道具产生的碎片数量则为 v(ci1)v \cdot (c _ i - 1)

    因此,我们统计每种道具的抽中次数,按照上面的方式计算即可。

    以下为统计次数过程核心代码:

    struct node {
    	string name;
    	int val;
    	int cnt;
    } a[1005];
    cin >> n >> k;
    for (int i = 1; i <= n; ++i) 
    	cin >> a[i].name >> a[i].val;
    for (int i = 1; i <= k; ++i) {
    	string var;
    	cin >> var;
    	for (int j = 1; j <= n; ++j) {
    		if (var == a[j].name) {
    			a[j].cnt++;
    			break;
    		}
    	}
    }
    

    以下为计算过程核心代码:

    const int value[] = { 0, 2000, 1000, 200, 36, 6 };
    for (int i = 1; i <= n; ++i) {
    	ans += value[a[i].val] * (a[i].cnt - 1);
    }
    

    视频题解

    完整代码请在视频中查看。

    • 1

    信息

    ID
    8136
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者