戴夫准备在后院种植植物来抵御僵尸的进攻。 他有 n n 种植物可以选择,每种植物有两个属性:攻击力 s s 和类型 t t。其中 t = 1 t=1 表示这是一种特殊植物(如坚果墙), t = 0 t=0 表示普通攻击植物。 为了形成有效的防御体系,戴夫需要选择最大数量的植物,使得对于每个选中的植物 i i,要么它是特殊植物( t = 1 t=1),要么存在一个选中的植物 j j (注意可以是自己),使得当前植物的攻击力能整除那个植物的攻击力加1(即 s i ∣ ( s j + 1 ) s i ∣(s j +1),表示植物间有配合效果)。 输入格式 第一行一个整数 T T 表示多组数据。 对于每组数据: 第一行一个整数 n n。 接下来一行 n n 个数,第 i i 个表示 s i s i 。 接下来一行 n n 个数,第 i i 个表示 t i t i 。 输出格式 对于每组数据: 输出一行一个整数,表示最多能选择的植物数量。 使用c++语言
```cpp #include <iostream> #include <vector> #include <algorithm> #include <unordered_map> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int T; cin >> T; while (T--) { int n; cin >> n; vector<int> s(n); for (int i = 0; i < n; i++) { cin >> s[i]; } vector<int> t(n); for (int i = 0; i < n; i++) { cin >> t[i]; } // 分离普通植物和特殊植物 vector<int> normal, special; for (int i = 0; i < n; i++) { if (t[i] == 0) { normal.push_back(s[i]); } else { special.push_back(s[i]); } } // 对普通植物排序 sort(normal.begin(), normal.end()); // 统计特殊植物的数量 int specialCount = special.size(); // 使用哈希表记录每个攻击力值 unordered_map<int, bool> exists; for (int val : normal) exists[val] = true; for (int val : special) exists[val] = true; // 贪心选择普通植物 int selectedNormal = 0; for (int val : normal) { bool canSelect = false; // 检查是否存在特殊植物 if (specialCount > 0) { canSelect = true; } // 检查是否存在其他植物满足整除条件 if (!canSelect) { // 检查是否存在已选的普通植物满足条件 for (int other : normal) { if (other == val) continue; if (exists[other] && (val % (other + 1) == 0)) { canSelect = true; break; } } } // 检查是否存在特殊植物满足条件 if (!canSelect) { for (int sp : special) { if (val % (sp + 1) == 0) { canSelect = true; break; } } } if (canSelect) { selectedNormal++; // 标记当前植物已被选择 exists[val] = true; } } // 特殊植物总是可以被选择 int result = specialCount + selectedNormal; cout << result << "\n"; } return 0; } ``` 代码说明: 1. 数据结构: - 使用`vector<int>`存储普通植物和特殊植物的攻击力 - 使用`unordered_map`记录存在的植物攻击力值 2. 算法逻辑: - 特殊植物(t=1)总是可以被选择 - 普通植物需要满足条件:存在已选植物j使得`s[i] % (s[j] + 1) == 0` - 采用贪心策略选择普通植物 3. 优化: - 对普通植物排序便于处理 - 使用哈希表快速检查植物是否存在 - 优先检查特殊植物是否满足条件 4. 时间复杂度: - 每组数据O(n²)最坏情况,适合n≤1000的数据规模 注意: 这是一个贪心解法,对于某些特殊测试用例可能不是最优解。如果数据规模更大或需要精确最优解,可能需要使用图论或动态规划方法。 [2026-01-19 19:20:57 | AI问答 | 773点数解答]
- [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
- [字节豆包] 我要使用 MySQL 数据库,操作一个名为 student 的表,该表包含 id(int 类型)、name(varchar 类型)、age(int 类型)字段。使用 德鲁伊 连接池和 Spring JDBC 进行数据库操作,从 .properties 文件中读取连接池所需的参数。对 student 表按 id 进行查询操作,将查询结果用 Student 类封装,该类包含 id、name、age 属性。代码采用 MVC 架构,将数据持久层代码放在 dao 包下的 StudentDao 类中,同时提供测试上述功能的代码,测试功能使用junit4.0以上技术实现,使用@Transactional注解标记service类,将若干个增删改操作打包成一个事务,并验证事务的有效性,并写出它的pom.xml文件(1115点数解答 | 2025-03-19 11:17:31)261
- [DeepSeek] 我要使用 MySQL 数据库,操作一个名为 student 的表,该表包含 id(int 类型)、name(varchar 类型)、age(int 类型)字段。使用 德鲁伊 连接池和 Spring JDBC 进行数据库操作,从 .properties 文件中读取连接池所需的参数。对 student 表按 id 进行查询操作,将查询结果用 Student 类封装,该类包含 id、name、age 属性。代码采用 MVC 架构,将数据持久层代码放在 dao 包下的 StudentDao 类中,同时提供测试上述功能的代码,测试功能使用junit4.0以上技术实现,使用@Transactional注解标记service类,将若干个增删改操作打包成一个事务,并验证事务的有效性,并写出它的pom.xml文件(1275点数解答 | 2025-03-19 11:21:32)248
- [字节豆包] 题目(description): 卫星导航系统(如我国自主研发的北斗卫星导航系统)能实时获取位置、速度、时间等时空信息,在交通运输、农林渔业、气象测报、通信授时、救灾减灾、公共安全等领域都得到了广泛应用。 在应用层面,卫星导航系统一般以报文方式进行数据传输,其中$gprmc是常用报文之一,基本的格式如下: $gprmc,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh <1> utc时间,hhmmss.sss(时分秒.毫秒)格式 <2> 定位状态,a=有效定位,v=无效定位 <3> 纬度ddmm.mmmm(度分)格式 <4> 纬度半球n(北半球)或s(南半球) <5> 经度dddmm.mmmm(度分)格式 <6> 经度半球e(东经)或w(西经) <7> 地面速率(000.0~999.9节) <8> 地面航向(000.0~359.9度,以正北为参考基准) <9> utc日期,ddmmyy(日月年)格式 <10> 磁偏角(000.0~180.0度,前面的0也(385点数解答 | 2025-01-08 03:43:54)429
- [字节豆包] 题目(description): 卫星导航系统(如我国自主研发的北斗卫星导航系统)能实时获取位置、速度、时间等时空信息,在交通运输、农林渔业、气象测报、通信授时、救灾减灾、公共安全等领域都得到了广泛应用。 在应用层面,卫星导航系统一般以报文方式进行数据传输,其中$gprmc是常用报文之一,基本的格式如下: $gprmc,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh <1> utc时间,hhmmss.sss(时分秒.毫秒)格式 <2> 定位状态,a=有效定位,v=无效定位 <3> 纬度ddmm.mmmm(度分)格式 <4> 纬度半球n(北半球)或s(南半球) <5> 经度dddmm.mmmm(度分)格式 <6> 经度半球e(东经)或w(西经) <7> 地面速率(000.0~999.9节) <8> 地面航向(000.0~359.9度,以正北为参考基准) <9> utc日期,ddmmyy(日月年)格式 <10> 磁偏角(000.0~180.0度,前面的0也(346点数解答 | 2025-01-08 03:46:29)425
- [字节豆包] 题目描述 现在给出一排共 n 只鹅的身高,李白想知道最高的鹅比其他所有鹅高多少、最矮的鹅 比其他所有鹅矮多少。 请输出这两行信息。 输入格式 输入共两行。 第一行一个整数 n 表示鹅的数目。 第二行共 n 个整数 ai(i=1,2,3...n),表示第 i 只鹅的身高。 输出格式 输出共两行。 第一行共 n 个空格隔开的整数,第 i 个整数表示序列中第 i 只鹅比最高的那只鹅要 矮多少。 第二行共 n 个空格隔开的整数,第 i 个整数表示序列中第 i 只鹅比最矮的那只鹅要 高多少。 输入输出样例 输入 #1 6 4 7 8 6 3 2 输出 #1 4 1 0 2 5 6 2 5 6 4 1 0 说明/提示 李白一共有 6 只鹅,最高的一只身高为 8,最矮的一只身高为 2,然后分别作为被减 数和减数参与身高差计算可得结果。 对于 30% 数据,保证 0≤ai≤30,1≤n≤20。 对于 100% 数据,保证 0≤ai≤1018,1≤n≤106。 用c++语言(549点数解答 | 2025-11-16 20:19:06)54
- [字节豆包] 给定一个包含 个元素的**整数**序列 ,记作 。 求另一个包含 个元素的待定**整数**序列 ,记 ,使得 且 尽可能的小。 输入 第一行一个整数 ,表示序列元素个数。 第二行 个整数,表示序列 。 输出 一行一个整数,表示 的前提下 的最小值。 样例输入 复制 2 4059 -1782 样例输出 复制 99 提示 对于 的数据, , ,且 序列不全为 来源/分类(746点数解答 | 2026-01-24 13:14:40)29
- [DeepSeek] 小核桃准备使用 a 数组,存储战力为1~10的守卫各有多少个。 即:a[1] 存储战斗力为1的守卫数量,a[2] 存储战斗力为 2 的守卫数量,... 依次类推,a[10] 存储战斗力为 10 的守卫数量。 请你编写程序,使用数组依次存储战力1~10的守卫数量,并按数组下标顺序(从小到大),依次输出每个守卫的战力。 样例1解释: 样例1 输入数据依次表示:战力为1 的守卫有 3 个,战力为3的守卫有 1 个,战力 为4 的守卫有 2 个,战力为 8 的守卫有 2 个,其余战力为2.5.6.7.9.10的守卫数量都为 0。 所以依次输出 三 个 1,一个 3,两个 4,两个 8。 输入: 十个整数,即1~10中每个数的个数。 输出: 一行若干个整数,为从小到大排好序的数,相邻数字之间用空格隔开。 c++(130点数解答 | 2026-01-17 14:11:22)30
- [字节豆包] 一是未充分调动干部自学积极性。尽管定期组织学习中央八项规定精神有关内容,但多以集中领学文件为主,未能有效引导个人自学,也缺乏多样化形式,导致干部学习热情和主动性不足。二是学习研讨参与度不均衡。学习教育工作开展期间,部分领导干部发言积极,普通党员干部参与度不高,存在“旁观者”现象。研讨过程中,结合实际工作讨论不够紧密,未将规定精神有效融入日常业务,无法充分发挥学习指导实践的作用。三是问题查摆不够精准。部分党员干部问题查摆缺乏针对性,未结合自身岗位特点和工作实际,存在“通用问题多、个性问题少”的情况。针对存在问题,提出下步工作打算,要质量高的问题,最好可以让材料一遍过,领导不修改(767点数解答 | 2025-08-07 17:07:03)162
- [DeepSeek] 在学习了进制转换后, 𝑇 𝐽 老师提出一个问题: 𝑛 ! 转换成 𝑃 进制后,末尾会有多少零呢? 比如: 10 ! = 1 ∗ 2 ∗ . . . ∗ 10 = ( 3628800 ) 10 = ( 156574400 ) 8 = ( 1101110101111100000000 ) 2 = ( 375 𝐹 00 ) 16 10 ! 表示成十进制、八进制,未尾都有 2 个零; 10 ! 表示成二进制未尾有 8 个零。 请你编程计算 𝑛 ! 表示 𝑃 进制后末尾零的个数? 输入 一行,两个用空格隔开的整数 𝑛 , 𝑝 . 输出 一行,一个整数,表示零的个数。 样例输入 复制 10 2 样例输出 复制 8 提示 对于20%数据, 𝑝 = 10 。 对于100%数据, 2 ≤ 𝑛 ≤ 100000 , 2 ≤ 𝑝 ≤ 100000(549点数解答 | 2026-01-11 17:49:54)25
- [DeepSeek] 戴夫准备在后院种植植物来抵御僵尸的进攻。 他有 n n 种植物可以选择,每种植物有两个属性:攻击力 s s 和类型 t t。其中 t = 1 t=1 表示这是一种特殊植物(如坚果墙), t = 0 t=0 表示普通攻击植物。 为了形成有效的防御体系,戴夫需要选择最大数量的植物,使得对于每个选中的植物 i i,要么它是特殊植物( t = 1 t=1),要么存在一个选中的植物 j j (注意可以是自己),使得当前植物的攻击力能整除那个植物的攻击力加1(即 s i ∣ ( s j + 1 ) s i ∣(s j +1),表示植物间有配合效果)。 输入格式 第一行一个整数 T T 表示多组数据。 对于每组数据: 第一行一个整数 n n。 接下来一行 n n 个数,第 i i 个表示 s i s i 。 接下来一行 n n 个数,第 i i 个表示 t i t i 。 输出格式 对于每组数据: 输出一行一个整数,表示最多能选择的植物数量。 使用c++语言(773点数解答 | 2026-01-19 19:20:57)23