初一某班有n位同学,学号1~n,新学期开始大家相互不认识,两两之间的好感度均为0。 这一个学期内发生了很多事情,影响着人与人之间的好感度。例如当a对b做了好事,b对a的好感度会增加;当a对b做了坏事,b对a的好感度会减少。 老师希望能在每件事情发生后,统计当下同学间好感度的最大值,你能帮他完成吗? 注意:好感度不是相互的,a对b的好感度可以不等于b对a的好感度。


要解决这个问题,我们可以使用一个二维数组来存储每位同学之间的当前好感度,并在每次事件发生后更新这个数组。我们需要维护一个变量来记录当前的最大好感度。 具体步骤如下: 1. 初始化一个 \( n \times n \) 的二维数组 `goodwill`,其中 `goodwill[i][j]` 表示第 \( i \) 位同学对第 \( j \) 位同学的好感度。初始时所有好感度为0。 2. 初始化一个变量 `max_goodwill` 为0,用于记录当前的最大好感度。 3. 对于每个事件: - 如果是做好事,增加相应的好感度。 - 如果是做坏事,减少相应的好感度。 - 更新 `max_goodwill`,确保它始终是当前的最大好感度。 4. 每次事件处理完后,输出当前的最大好感度。 下面是一个Python代码实现: ```python def update_goodwill(n, events): # 初始化好感度矩阵 goodwill = [[0 for _ in range(n)] for _ in range(n)] max_goodwill = 0 for event in events: action, a, b, value = event a -= 1 # 转换为0索引 b -= 1 # 转换为0索引 if action == "good": goodwill[b][a] += value elif action == "bad": goodwill[b][a] -= value # 更新最大好感度 max_goodwill = max(max_goodwill, goodwill[b][a]) # 输出当前的最大好感度 print(max_goodwill) # 示例输入 n = 5 events = [ ("good", 1, 2, 10), ("bad", 2, 1, 5), ("good", 3, 4, 15), ("good", 4, 3, 20), ("bad", 1, 3, 2) ] update_goodwill(n, events) ``` 解释 - `goodwill` 是一个 \( n \times n \) 的二维数组,初始化为0。 - `max_goodwill` 用于记录当前的最大好感度。 - `events` 是一个列表,每个元素是一个元组,表示一个事件。元组的形式为 `(action, a, b, value)`,其中 `action` 是字符串 "good" 或 "bad",`a` 和 `b` 是同学的学号(从1开始),`value` 是好感度的变化值。 - 在每个事件中,根据 `action` 更新 `goodwill` 数组,并更新 `max_goodwill`。 - 每次事件处理完后,输出当前的最大好感度。 这个算法的时间复杂度主要取决于事件的数量和每次事件的处理时间。每次事件的处理时间是常数级别的,因此总体复杂度是 \( O(m) \),其中 \( m \) 是事件的数量。 [2024-10-17 16:17:46 | AI写代码神器 | 648点数解答]
- c语音 定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98↙ 李四 10002 100↙ 王五 10003 95↙ 赵六 10004 99↙ 钱七 10005 93↙ 输出样例: 请输入第1位同学的信息:姓名 学号 成绩↙ 请输入第2位同学的信息:姓名 学号 成绩↙ 请输入第3位同学的信息:姓名 学号 成绩↙ 请输入第4位同学的信息:姓名 学号 成绩↙ 请输入第5位同学的信息:姓名 学号 成绩↙ 钱七,10005,93↙ 王五,10003,95↙ 张三,10001,98↙ 赵六,10004,99↙ 李四,10002,100↙(373点数解答 | 2024-10-30 00:37:20)266
- 定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98 李四 10002 100 王五 10003 95 赵六 10004 99 钱七 10005 93 输出样例: 请输入第1位同学的信息:姓名 学号 成绩 请输入第2位同学的信息:姓名 学号 成绩 请输入第3位同学的信息:姓名 学号 成绩 请输入第4位同学的信息:姓名 学号 成绩 请输入第5位同学的信息:姓名 学号 成绩 钱七,10005,93 王五,10003,95 张三,10001,98 赵六,10004,99 李四,10002,100(354点数解答 | 2024-10-30 18:45:58)206
- c语言定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98↙ 李四 10002 100↙ 王五 10003 95↙ 赵六 10004 99↙ 钱七 10005 93↙ 输出样例: 请输入第1位同学的信息:姓名 学号 成绩↙ 请输入第2位同学的信息:姓名 学号 成绩↙ 请输入第3位同学的信息:姓名 学号 成绩↙ 请输入第4位同学的信息:姓名 学号 成绩↙ 请输入第5位同学的信息:姓名 学号 成绩↙ 钱七,10005,93↙ 王五,10003,95↙ 张三,10001,98↙ 赵六,10004,99↙ 李四,10002,100↙(373点数解答 | 2024-10-31 19:49:58)192
- c语音定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98↙ 李四 10002 100↙ 王五 10003 95↙ 赵六 10004 99↙ 钱七 10005 93↙ 输出样例: 请输入第1位同学的信息:姓名 学号 成绩↙ 请输入第2位同学的信息:姓名 学号 成绩↙ 请输入第3位同学的信息:姓名 学号 成绩↙ 请输入第4位同学的信息:姓名 学号 成绩↙ 请输入第5位同学的信息:姓名 学号 成绩↙ 钱七,10005,93↙ 王五,10003,95↙ 张三,10001,98↙ 赵六,10004,99↙ 李四,10002,100↙(326点数解答 | 2025-01-01 20:11:47)183
- student类具体要求如下: 私有成员变量:学号(sid,string类型),姓名(name,string类型),年龄(age,int类型),专业(major,string类型) 。 提供无参构造和有参构造方法。(注意:有参构造方法中需要对年龄大小进行判定) 普通成员方法:print(),输出格式为“学号:6020203100,姓名:王宝强,年龄:21,专业:计算机科学与技术”。 普通成员方法:提供setxxx和getxxx方法。(注意:setage()方法中需要对年龄进行判定) 注意: 年龄age不大于0,则不进行赋值。 print()中的“:”和“,”为均为中文冒号和逗号。 public class main{ public static void main(string[] args) { scanner sc = new scanner(system.in); //调用无参构造方法,并通过setter方法进行设值 string sid1 = sc.next(); string name1 = sc.ne(464点数解答 | 2024-11-19 15:55:26)205
- 题目描述 对于一个数字字符串,如果它满足偶数下标处的数字为偶数且奇数下标处的数字为质数(下标从 0 开始,从左往右依次增大),我们称这它为“好数字”。 比如:"2582" 是“好数字”,因为偶数下标处的数字(下标为 0 的数字为 2、下标为 2 的数字为 8)是偶数,奇数下标处的数字(下标为 1 的数字为 5、下标为 3 的数字为 2)为质数。 但 "3245" 不是“好数字”,因为 3 在偶数下标处但不是偶数。 给你一个整数 n,请你返回长度为 n 且为“好数字”的数字字符串的个数。 由于答案可能会很大,请你将它对 10^9+7 取余后返回 。 注:一个数字字符串是指每一位都由 0 到 9 组成的字符串,且可能包含前导 0 。 输入描述 一个正整数,表示数字字符串的长度 n。 输出描述 一个正整数,表示最终的结果。 样例1 输入 1 输出 5 样例2 输入 5 输出 2000 样例3 输入 50 输出 564908303 提示 对于 100% 的数据,1≤n≤10^9。 请用C++语言完成(457点数解答 | 2025-07-21 17:46:17)79
- 题目描述 对于一个数字字符串,如果它满足偶数下标处的数字为偶数且奇数下标处的数字为质数(下标从 0 开始,从左往右依次增大),我们称这它为“好数字”。 比如:"2582" 是“好数字”,因为偶数下标处的数字(下标为 0 的数字为 2、下标为 2 的数字为 8)是偶数,奇数下标处的数字(下标为 1 的数字为 5、下标为 3 的数字为 2)为质数。 但 "3245" 不是“好数字”,因为 3 在偶数下标处但不是偶数。 给你一个整数 n,请你返回长度为 n 且为“好数字”的数字字符串的个数。 由于答案可能会很大,请你将它对 10^9+7 取余后返回 。 注:一个数字字符串是指每一位都由 0 到 9 组成的字符串,且可能包含前导 0 。 请用C++语言以及快速幂完成 输入描述 一个正整数,表示数字字符串的长度 n。 输出描述 一个正整数,表示最终的结果。 样例1 输入 1 输出 5 样例2 输入 5 输出 2000 样例3 输入 50 输出 564908303 提示 对于 100% 的数据,1≤n≤10^9。(488点数解答 | 2025-07-21 17:50:31)76
- #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> #include <stdbool.h> /* 学生管理系统 包括:学号(long long int),姓名(char[]),性别(char[]),年龄(int) 存储结构:顺序表 顺序表用动态内存分配实现创建,初始容量设置为1 主要功能: 1.学生信息的插入 尾部插入 插入到指定学号后面 插入到指定姓名后面 注意:需要输入 学号(long long int),姓名(char[]),性别(char[]),年龄(int) 学号必须输入且不能重复 2.学生信息删除 尾部删除 根据学号删除学生 根据姓名删除学生 3.修改学生信息 根据学号修改学生 根据姓名修改学生 4.查询学生信息 根据学号查询学生 根据姓名查询学生 文件存储(stuinfo.txt) 结束销毁顺序表 */ //创建学生结构 struct student { long long int id;//学号(2323点数解答 | 2024-11-01 02:41:20)179
- 7-2 成绩计算-2-关联类 分数 50 作者 蔡轲 单位 南昌航空大学 创建成绩类,包含: 属性:平时成绩(int)、期末成绩(int) 方法:计算总成绩(计算规则:平时成绩*0.4+期末成绩*0.6,保留整数部分,小数部分直接丢弃) 创建学生类,包含: 属性:学号(String)、姓名(String)、语文成绩(成绩类)、数学成绩(成绩类)、物理成绩(成绩类) 方法:计算总分、计算平均分 输入3个学生的信息,将每个学生的信息封装在一个学生对象中。 按输入顺序依次输出3个学生的总分、平均分(精确到小数点后两位,舍去部分按四舍五入规则计入最后一位)。 浮点数保留小数的相关知识可参考:https://blog.csdn.net/huaishuming/article/details/17752365 注意:未用学生类对象封装数据的,本题计0分 输入格式: 依次输入3个学生的每门课成绩,每个学生成绩信息格式: 学号+英文空格+姓名+英文空格+课程名+英文空格+平时成绩+英文空格+期末成绩 注:3个学生的课程顺序可能会不一致 例如: 22201311 张琳 语文 7(621点数解答 | 2025-04-18 11:43:55)233
- 物理 出题范围:初一 题型:试卷一套 出题:40道 总分:100分(922点数解答 | 2024-12-20 00:04:38)176
- <!DOCTYPE html> <html> <head> <title>地下水及地基土腐蚀性分析</title> <style> table { border-collapse: collapse; margin: 20px 0; } th, td { border: 1px solid #000; padding: 8px; text-align: center; } .header { background-color: #f2f2f2; } .corrosion-level { font-weight: bold; } </style> </head> <body> <h2>地下水腐蚀性判定表</h2> <table> <tr class="header"> <th>检测项目</th> <th>单位</th> <th>最大值</th> <th>最小值</th> <th>平均值</th> (498点数解答 | 2025-06-08 21:49:49)89
- c++ 【题目描述】 输入一个整数n (保证范围在0 到25 之间),表示一个人的年龄。 如果n 在0∼3 的范围内,输出"infant"。 如果n 在4∼12 的范围内,输出"child"。 如果n 在13∼18 的范围内,输出"youngster"。 如果n 在19∼25 的范围内,输出"youth"。 【输入】 一个整数(范围在0 到25 之间)。 【输出】 一个英文单词,如题目描述所述。 【输入样例】 3 【输出样例】 infant(224点数解答 | 2025-02-28 11:15:18)144