提高】推销员 显示标签 时间限制:C/C++ 1000MS,其他语言 2000MS 内存限制:C/C++ 128MB,其他语言 256MB 难度:提高 分数:100 OI排行榜得分:18(0.1*分数+2*难度) 出题人: 描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品。螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户。螺丝街一共有N家住户,第i家住户到入口的距离为Si米。由于同一栋房子里可以有多家住户,所以可能有多家住户与入口的距离相等。阿明会从入口进入,依次向螺丝街的X家住户推销产品,然后再原路走出去。阿明每走1米就会积累1点疲劳值,向第i家住户推销产品会积累Ai点疲劳值。阿明是工作狂,他想知道,对于不同的X,在不走多余的路的前提下,他最多可以积累多少点疲劳值。 输入描述 第一行有一个正整数N,表示螺丝街住户的数量。 接下来的一行有N个正整数,其中第i个整数Si表示第i家住户到入口的距离。数据保证S1≤S2≤…≤Sn<108。 接下来的一行有N个正整数,其中第i个整数Ai表示向第i户住户推销产品会积累的疲劳值。数据保证Ai<103。 输出
```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; // 定义住户结构体,包含距离和疲劳值 struct House { int distance; int fatigue; }; // 比较函数,按疲劳值从大到小排序 bool compare(const House& a, const House& b) { return a.fatigue > b.fatigue; } int main() { int N; cin >> N; vector<House> houses(N); // 读取每家住户到入口的距离 for (int i = 0; i < N; ++i) { cin >> houses[i].distance; } // 读取向每家住户推销产品的疲劳值 for (int i = 0; i < N; ++i) { cin >> houses[i].fatigue; } // 对于不同的X值进行计算 for (int X = 1; X <= N; ++X) { vector<House> selected = houses; // 按疲劳值从大到小排序 sort(selected.begin(), selected.end(), compare); int maxDistance = 0; int totalSalesFatigue = 0; // 选择前X个疲劳值最大的住户 for (int i = 0; i < X; ++i) { totalSalesFatigue += selected[i].fatigue; maxDistance = max(maxDistance, selected[i].distance); } // 计算总疲劳值,走路疲劳值为往返 int totalFatigue = 2 * maxDistance + totalSalesFatigue; cout << totalFatigue << endl; } return 0; } ``` 代码解释: 1. 结构体 `House`:定义了一个 `House` 结构体来存储每家住户的距离和疲劳值。 2. 比较函数 `compare`:用于对住户按疲劳值从大到小排序。 3. 数据读取:先读取住户数量 `N`,接着读取每家住户到入口的距离,再读取向每家住户推销产品的疲劳值。 4. 主循环:对于不同的 `X` 值(从 1 到 `N`)进行计算: - 创建一个 `selected` 向量,将所有住户复制到其中。 - 对 `selected` 向量按疲劳值从大到小排序。 - 选择前 `X` 个疲劳值最大的住户,计算推销的总疲劳值和最大距离。 - 计算总疲劳值,包括往返走路的疲劳值和推销的疲劳值。 5. 输出结果:输出每个 `X` 值对应的最大疲劳值。 [2026-02-04 21:39:36 | AI问答 | 627点数解答]
- [字节豆包] 提高】推销员 显示标签 时间限制:C/C++ 1000MS,其他语言 2000MS 内存限制:C/C++ 128MB,其他语言 256MB 难度:提高 分数:100 OI排行榜得分:18(0.1*分数+2*难度) 出题人: 描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品。螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户。螺丝街一共有N家住户,第i家住户到入口的距离为Si米。由于同一栋房子里可以有多家住户,所以可能有多家住户与入口的距离相等。阿明会从入口进入,依次向螺丝街的X家住户推销产品,然后再原路走出去。阿明每走1米就会积累1点疲劳值,向第i家住户推销产品会积累Ai点疲劳值。阿明是工作狂,他想知道,对于不同的X,在不走多余的路的前提下,他最多可以积累多少点疲劳值。 输入描述 第一行有一个正整数N,表示螺丝街住户的数量。 接下来的一行有N个正整数,其中第i个整数Si表示第i家住户到入口的距离。数据保证S1≤S2≤…≤Sn<108。 接下来的一行有N个正整数,其中第i个整数Ai表示向第i户住户推销产品会积累的疲劳值。数据保证Ai<103。 输出(627点数解答 | 2026-02-04 21:39:36)4
- [字节豆包] 【提高】Comfortable Cows 显示标签 时间限制:C/C++ 1000MS,其他语言 2000MS 内存限制:C/C++ 128MB,其他语言 256MB 难度:提高 分数:100 OI排行榜得分:18(0.1*分数+2*难度) 出题人: 描述 Farmer Nhoj 的草地可以被看作是一个由正方形方格组成的巨大的二维方阵(想象一个巨大的棋盘)。初始时,草地上是空的。 Farmer Nhoj 将会逐一地将 NN(1≤N≤105)头奶牛加入到草地上。第 ii 头奶牛将会占据方格 (xi,yi),不同于所有已经被其他奶牛占据的方格(0≤xi,yi≤1000)。 一头奶牛被称为是「舒适的」,如果它水平或竖直方向上与恰好三头其他奶牛相邻。然而,太舒适的奶牛往往产奶量落后,所以 Farmer Nhoj 想要额外加入一些奶牛直到没有奶牛(包括新加入的奶牛)是舒适的。注意加入的奶牛的 xx 和 yy 坐标并不一定需要在范围 0…1000内。 对于 1…N 中的每个 i,输出当初始时草地上有奶牛 1…i 时,Farmer Nhoj 为使得没有奶牛舒适,需要加入的奶牛的最小数量。(956点数解答 | 2026-02-02 17:26:13)9
- [字节豆包] 【NOIP2014 基础】螺旋矩阵 显示标签 时间限制:C/C++ 1000MS,其他语言 2000MS 内存限制:C/C++ 128MB,其他语言 256MB 难度:提高 分数:100 OI排行榜得分:18(0.1*分数+2*难度) 出题人: 描述 一个 n 行 n 列的螺旋矩阵可由如下方法生成: 从矩阵的左上角(第 1 行第 1 列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。根据经过顺序,在格子中依次填入 1,2,3,...,n 2 ,便构成了一个螺旋矩阵。 下图是一个 n=4 时的螺旋矩阵。 ⎝ ⎜ ⎜ ⎜ ⎛ 1 12 11 10 2 13 16 9 3 14 15 8 4 5 6 7 ⎠ ⎟ ⎟ ⎟ ⎞ 现给出矩阵大小 n 以及 i 和 j,请你求出该矩阵中第 i 行第 j 列的数是多少。 输入描述 共一行,包含三个整数 n, i, j,每两个整数之间用一个空格隔开,分别表示矩阵大小、待求的数所在的行号和列号。 输出描述 一个整数,表(289点数解答 | 2026-02-02 17:32:56)8
- [DeepSeek] - ItemId: 12720 #道具id A级赛车 雷诺 ItemNum: 1 #数量 ObtainTime: 1 #时间 AvailPeriod: -1 #0显示数量 -1显示永久 - ItemId: 127758 #道具id 宠物 冰凤 ItemNum: 1 #数量 ObtainTime: 1 #时间 AvailPeriod: -1 #0显示数量 -1显示永久 - ItemId: 21980 #道具id 效率宝珠LV4 ItemNum: 100 #数量 ObtainTime: 1 #时间 AvailPeriod: 0 #0显示数量 -1显示永久 - ItemId: 21986 #道具id 重生宝珠LV4 ItemNum: 100 #数量 ObtainTime: 1 #时间 AvailPeriod: 0 #0显示数量 -1显示永久 这种文本文件如何用易语言读入并显示到超级列表框内 (571点数解答 | 2025-08-23 20:54:40)193
- [DeepSeek] - ItemId: 12720 #道具id A级赛车 雷诺 ItemNum: 1 #数量 ObtainTime: 1 #时间 AvailPeriod: -1 #0显示数量 -1显示永久 - ItemId: 127758 #道具id 宠物 冰凤 ItemNum: 1 #数量 ObtainTime: 1 #时间 AvailPeriod: -1 #0显示数量 -1显示永久 - ItemId: 21980 #道具id 效率宝珠LV4 ItemNum: 100 #数量 ObtainTime: 1 #时间 AvailPeriod: 0 #0显示数量 -1显示永久 - ItemId: 21986 #道具id 重生宝珠LV4 ItemNum: 100 #数量 ObtainTime: 1 #时间 AvailPeriod: 0 #0显示数量 -1显示永久 这种文本文件如何用易语言读入并显示到超级列表框内,并且可以增加新的一样的文本(1317点数解答 | 2025-08-23 20:58:40)198
- [字节豆包] 6-5 字符串比较 分数 5 全屏浏览 切换布局 作者 王跃萍 单位 东北石油大学 函数fun的功能是比较两个字符串,如果s1=s2,则返回值0;如果s1>s2,则返回值1;如果s1<s2,则返回-1。 函数接口定义: int fun(char a[],char b[]); 其中a、b是用户传入的参数。 函数比较两个字符串,如果a=b,则返回值0;如果a>b,则返回值1;如果a<b,则返回-1。 裁判测试程序样例: #include "stdio.h" #include "string.h" int fun(char a[],char b[]); int main() {int t; char s1[40],s2[40]; gets(s1); gets(s2); t=fun(s1,s2); printf("%d\n",t); return 0; } /* 请在这里填写答案 */ 输入样例: asd fg 输出样例: -1 (178点数解答 | 2025-12-10 18:29:54)49
- [字节豆包] 函数fun的功能是比较两个字符串,如果s1=s2,则返回值0;如果s1>s2,则返回值1;如果s1<s2,则返回-1。 函数接口定义: int fun(char a[],char b[]); 其中a、b是用户传入的参数。 函数比较两个字符串,如果a=b,则返回值0;如果a>b,则返回值1;如果a<b,则返回-1。 裁判测试程序样例: #include "stdio.h" #include "string.h" int fun(char a[],char b[]); int main() {int t; char s1[40],s2[40]; gets(s1); gets(s2); t=fun(s1,s2); printf("%d\n",t); return 0; } /* 请在这里填写答案 */(221点数解答 | 2025-12-10 23:11:13)27
- [字节豆包] 【NOIP2015 基础】骑士的金币(coin) 显示标签 时间限制:C/C++ 1000MS,其他语言 2000MS 内存限制:C/C++ 128MB,其他语言 256MB 难度:提高 分数:100 OI排行榜得分:18(0.1*分数+2*难度) 出题人: 描述 国王将金币作为奖励,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币(N为任意正整数)。 你需要编写一个程序,确定从第一天开始的给定天数内,骑士一共获得了多少金币。 输入描述 一个整数(范围1到10000),表示天数。 输出描述 骑士获得的金币数。 用例输入 1 6 用例输出 1 14 提示 【来源】 noip2015普及组复赛第1题 来源 noip复赛 需要找规律的循环(552点数解答 | 2026-02-04 21:40:54)2
- [字节豆包] 【NOIP2015 基础】扫雷游戏(mine) 显示标签 时间限制:C/C++ 1000MS,其他语言 2000MS 内存限制:C/C++ 256MB,其他语言 512MB 难度:提高 分数:100 OI排行榜得分:18(0.1*分数+2*难度) 出题人: 描述 扫雷游戏是一款十分经典的单机小游戏。在 n行 m 列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。 现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格周围的地雷格数。 注:一个格子的周围格子包括其上、下、左、右、左上、右上、左下、右下八个方向上与之直接相邻的格子。 输入描述 输入文件第一行是用一个空格隔开的两个整数n和m,分别表示雷区的行数和列数。 接下来 n行,每行m 个字符,描述了雷区中的地雷分布情况。字符’*’表示相应格子是地雷格,字符’?’表示相应格子是非地雷格。相邻字符之间无分隔符。 输出描述 输出文件包含 n 行,每行 m(545点数解答 | 2026-02-02 17:34:02)11
- [字节豆包] [GESP202503 五级] 原根判断 显示标签 时间限制:C/C++ 1000MS,其他语言 2000MS 内存限制:C/C++ 256MB,其他语言 512MB 难度:未知 分数:100 OI排行榜得分:20(0.1*分数+2*难度) 出题人: 描述 小 A 知道,对于质数 p 而言,p 的原根 g 是满足以下条件的正整数: 1<g<p; g p−1 modp=1; 对于任意 1≤i<p−1 均有 g i modp =1。 其中 amodp 表示 a 除以 p 的余数。 小 A 现在有一个整数 a,请你帮他判断 a 是不是 p 的原根。 输入描述 第一行,一个正整数 T,表示测试数据组数。 每组测试数据包含一行,两个正整数 a,p。 输出描述 对于每组测试数据,输出一行,如果 a 是 p 的原根则输出 Yes,否则输出 No。 用例输入 1 3 3 998244353 5 998244353 7 998244353 用例输出 1 Yes Yes No 提示 【数据范围】 对于 40% 的测试点,保证 3≤p≤10 3 。 对于所有测试(668点数解答 | 2026-02-02 17:30:47)7
- [字节豆包] [GESP202503 五级] 原根判断 显示标签 时间限制:C/C++ 1000MS,其他语言 2000MS 内存限制:C/C++ 256MB,其他语言 512MB 难度:未知 分数:100 OI排行榜得分:20(0.1*分数+2*难度) 出题人: 描述 小 A 知道,对于质数 p 而言,p 的原根 g 是满足以下条件的正整数: 1<g<p; g p−1 modp=1; 对于任意 1≤i<p−1 均有 g i modp =1。 其中 amodp 表示 a 除以 p 的余数。 小 A 现在有一个整数 a,请你帮他判断 a 是不是 p 的原根。 输入描述 第一行,一个正整数 T,表示测试数据组数。 每组测试数据包含一行,两个正整数 a,p。 输出描述 对于每组测试数据,输出一行,如果 a 是 p 的原根则输出 Yes,否则输出 No。 用例输入 1 3 3 998244353 5 998244353 7 998244353 用例输出 1 Yes Yes No 提示 【数据范围】 对于 40% 的测试点,保证 3≤p≤10 3 。 对于所有测试(511点数解答 | 2026-02-03 17:11:00)7
- [字节豆包] 提高】卫星照片 USACO 显示标签 时间限制:C/C++ 1000MS,其他语言 2000MS 内存限制:C/C++ 128MB,其他语言 256MB 难度:普及 分数:100 OI排行榜得分:16(0.1*分数+2*难度) 出题人: 描述 农夫约翰总是想要一个农场的地图,所以他拍摄了一张N行M列的卫星照片。一部分的照片看起来像这样: .................. ..#####.......##.. ..#####......##... .................. #.......###.....#. #.....#####....... 他认为每个联通块都是一个谷仓或一头奶牛。联通块由若干个彼此水平或垂直相邻的#符号组成。以下的照片被认为是两个联通块: .... .#.. ..#. .... 农夫约翰认为一个联通块是谷仓,当且仅当它是一个完整的矩形,否则该联通块是一头奶牛。在第一张照片上面,有三个谷仓(大小分别为2x1,2x5和1x1)和两头奶牛。 计算他的卫星照片中谷仓和奶牛的数量。 输入描述 行1:两个空格分隔的整数:N和M(N,M<=80)。(850点数解答 | 2026-02-03 17:15:10)7