用c++语言解决以下编程题目: 题目描述 网上常有人说:看XX只能度过一个相对成功/失败的人生。不妨假设把这个句式套用在“参加睿抗比赛”以 及“玩手机游戏”上,那么有: ·“参加睿抗比赛”必然比“不参加睿抗比赛“要成功; 。“玩手机游戏“必然比“不玩手机游戏”要失败。 规在有N个人,已知这些人自己填写的是否参加了睿抗比赛以及是否玩手机游戏的情况,以及他们实际上 的成功程度的排序顺序,请问最少有多少人在填写情况时说谎了? 输入格式: 输出第一行为一个正整数T(1≤T≤5),表示数据组数。 每组数据第一行是一个正整数N(1≤N≤100000),表示总共的人数。 接下来的N行、第i行有两个数字A;B,表示第i位参真选手是否参加了睿抗比赛以及是否玩手机游 戏,0为没有参加/没有玩,1为参加了/玩了。 最后一行有N个数,为一个选手编号1到N的排列,表示选手成功程度的排序。排序顺序从最成功到最失败。 选手编号从1开始。 输出格式. 对于每组数据,输出一个整数,表示最少的说谎人数。
时间: 2024-04-16 09:27:36 浏览: 88
c++编程题用于类的例题如各种求长方体圆之类的c++题目对初学者很有用
可以使用C++语言来解决这个编程题目。我们可以按照以下步骤进行处理:
1. 读取输入的数据组数T。
2. 使用一个循环来处理每组数据:
a. 读取人数N。
b. 创建两个数组,一个用于存储参加睿抗比赛的情况,一个用于存储玩手机游戏的情况。初始值都为0。
c. 使用一个循环来读取每位选手的参加睿抗比赛和玩手机游戏情况,并将其存储到对应的数组中。
d. 读取选手成功程度的排序顺序。
e. 创建一个变量count用于记录说谎人数,初始值为0。
f. 使用一个循环来遍历选手成功程度的排序顺序,并与实际情况进行比较:
- 如果当前选手的参加睿抗比赛和玩手机游戏情况与排名相符,则继续下一个选手。
- 否则,说明该选手说谎了,count加1。
g. 输出最少的说谎人数count。
下面是一个示例的C++代码实现:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
int T;
cin >> T;
for (int t = 0; t < T; t++) {
int N;
cin >> N;
vector<int> contest(N, 0);
vector<int> game(N, 0);
for (int i = 0; i < N; i++) {
int A, B;
cin >> A >> B;
contest[i] = A;
game[i] = B;
}
vector<int> success(N);
for (int i = 0; i < N; i++) {
cin >> success[i];
}
int count = 0;
for (int i = 0; i < N; i++) {
if (contest[success[i] - 1] != 1 || game[success[i] - 1] != 1) {
count++;
}
}
cout << count << endl;
}
return 0;
}
```
这段代码使用了vector来存储参加睿抗比赛和玩手机游戏的情况,以及选手成功程度的排序顺序。然后通过循环遍历判断每位选手是否说谎,最后输出最少的说谎人数。
阅读全文