#ChineseGP#_Twitter 2024-05-12 22:18 采纳率: 10%
浏览 1

分区哦滨崎步v哦i华强北v吧

生活费
难度:
时间限制:1s
内存限制:256M
【题目描述】

𝑛
n 名大学生,编号为
1

𝑛
1∼n,初始时每个学生的生活费为
𝑝
1
,
𝑝
2
,

,
𝑝
𝑛
p
1

,p
2

,…,p
n

,即编号为
𝑖
i 的学生的生活费为
𝑝
𝑖
p
i

。生活费可能会有两种变化:
①来源个人,由某个学生的经济活动而产生。在某个时刻,某个学生的生活费会直接变成某一个数值,可能升高也可能降低。
②来源学校,在某个时刻,学校会对生活费低于某个标准线的全部学生,实施政策支持,使得他们的生活费全部正好到达标准线。
经过一段时间之后,上述变化发生了
𝑚
m 次。现在请你计算每个学生最后拥有多少生活费。
【输入格式】
第一行两个整数
𝑛
,
𝑚
n,m;

第二行
𝑛
n 个整数
𝑝
1
,
𝑝
2
,

,
𝑝
𝑛
p
1

,p
2

,…,p
n

接下来
𝑚
m 行,每行依次表示一次生活费的变化情况:

以字符
𝐼
I 开头的表示一次因为个人引起的变化,后接两个整数
𝑖
𝑑
id 和
𝑣
v,
𝑖
𝑑
id 表示生活费发生变化的学生编号,
𝑣
v 表示生活费变化的结果;

以字符
𝑆
S 开头的表示一次因为学校引起的变化,后接一个整数
𝑎
a,
𝑎
a 表示学校的标准线;

注意:保证按照时间先后顺序给出所有变化情况,即第
𝑖
i 次变化一定发生在第
𝑖
+
1
i+1 变化之前。
【输出格式】

𝑛
n 行,第
𝑖
i 行一个整数,表示编号为
𝑖
i 的学生最后拥有的生活费。
【输入输出样例#1】
输入#1
4 3
10 20 30 40
S 35
I 1 20
S 25
复制
输出#1
25
35
35
40
复制
【输入输出样例#2】
输入#2
3 5
36 47 44
I 3 61
S 1
S 34
I 3 45
S 21
复制
输出#2
36
47
45
复制
【输入输出样例#3】
输入#3
6 9
34 20 29 41 36 49
S 13
I 5 19
S 9
I 1 35
S 39
S 13
S 19
I 3 41
I 5 51
复制
输出#3
39
39
41
41
51
49
复制
【数据范围】
对于
40
%
40% 的数据:
1

𝑛
,
𝑚

1000
1≤n,m≤1000;

对于
100
%
100% 的数据:
1

𝑛
,
𝑚

1
0
5
1≤n,m≤10
5

1

𝑝
𝑖
,
𝑣
,
𝑎

1
0
5
1≤p
i

,v,a≤10
5

1

𝑖
𝑑

𝑛
1≤id≤n。 c++

  • 写回答

4条回答 默认 最新

  • 笑面虎 2024-05-12 22:18
    关注

    以下内容由CHATGPT及笑面虎共同生成、有用望采纳:


    【您想要解决的问题】:您提问的目的是要求解决一个编程问题,具体来说,是要根据给定的生活费变化规则,计算出每个学生最后拥有的生活费。

    【问题出现原因】:这个问题出现的原因是您需要处理一系列的生活费变化事件,包括个人经济活动导致的生活费变化和学校政策支持导致的生活费变化,并且需要在所有变化完成后,计算出每个学生最终的生活费。

    【问题解决方案】:为了解决这个问题,我们可以采用以下步骤:

    1. 读取输入的学生数量 ( n ) 和变化次数 ( m )。
    2. 读取每个学生的初始生活费 ( p_i )。
    3. 对于每次变化,如果是个人变化(以 'I' 开头),则更新指定学生 ( id ) 的生活费为 ( v );如果是学校政策(以 'S' 开头),则更新所有低于标准线 ( a ) 的学生的生活费为 ( a )。
    4. 维护一个变量来记录学校政策中出现的最高标准线,以便在个人变化时使用。
    5. 在所有变化完成后,输出每个学生的最终生活费。

    【提供代码】:以下是解决该问题的 C++ 代码示例:

    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    
    int main() {
        int n, m;
        cin >> n >> m;
        vector<int> p(n);
        for (int i = 0; i < n; ++i) {
            cin >> p[i];
        }
        int max_standard = 0; // 记录最高标准线
        for (int i = 0; i < m; ++i) {
            string type;
            int id, v;
            cin >> type;
            if (type[0] == 'I') {
                cin >> id >> v;
                p[id - 1] = v; // 更新个人生活费,注意 id 是从 1 开始的
            } else {
                cin >> v;
                max_standard = max(max_standard, v); // 更新最高标准线
            }
        }
        // 使用最高标准线更新所有低于该标准的生活费
        for (int i = 0; i < n; ++i) {
            if (p[i] < max_standard) {
                p[i] = max_standard;
            }
        }
        // 输出每个学生的最终生活费
        for (int i = 0; i < n; ++i) {
            cout << p[i] << endl;
        }
        return 0;
    }
    

    【代码运行方式】:您需要将上述代码复制到 C++ 编译环境中,如 Visual Studio、GCC 或其他支持 C++ 的 IDE 中,然后编译并运行程序。程序将从标准输入读取数据,并在标准输出中打印每个学生最终的生活费。

    【代码预期运行结果】:代码将按照题目描述的输入格式接收输入,并按照输出格式打印出每个学生最终的生活费。

    【推荐相关链接】:

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月12日

悬赏问题

  • ¥50 python批量提取发票的信息
  • ¥15 mysql安装,初始化数据库失败
  • ¥15 虚幻五引擎内容如何上传至网盘?
  • ¥15 使用mmpose库时出现了问题
  • ¥15 IRI2016模型matlab运行报错
  • ¥50 bat怎么设置电脑后台自动点击网页指定词运行脚本,输入指定网页链接,指定点击词,指定间隔时间,指定网页出现的词,指定网页出现词出现后后点击锁定,放在后台运行不影响前台鼠标工作
  • ¥20 20CrMnMo的高温变形抗力
  • ¥15 RTX3.6 5565驱动中断报错
  • ¥50 带防重放token(Antireplay-Token)的网站怎么用Python发送请求
  • ¥15 visa版本没问题,串口调试助手调试串口正常使用,但是labview刷新不出来