元豪 发表于 2023-4-29 16:28:17

蒟蒻求助!!

本帖最后由 元豪 于 2023-4-29 16:36 编辑

有N个人,编号为1,2,…,N。

举行了M次聚会。k_i; 参加第 i ( 1≤i≤M )次聚会的人是 x_i 人。

确定是否每两个人至少参加一次同一个聚会。

输入样例:

3 3
2 1 2
2 2 3
2 1 3

输出:

Yes

解释:

第一个人和第二个人都参加了第一次聚会。

第二个人和第三个人都参加了第二次聚会。

第一个人和第三个人都参加了第三次聚会。

因此,每两个人至少参加一次同一个聚会,所以答案是肯定的。

错了十个点,大家帮忙看看为什么{:10_254:}

https://atcoder.jp/contests/abc272/submissions/41016260

#include <bits/stdc++.h>
using namespace std;

int g, h, s, dss, ok = 0;
int ren, juhui;

int main(){
    cin >> ren >> juhui;
    for (int i = 0; i < juhui; i++){
      cin >> h;
      for (int j = 0; j < h; j++){
            cin >> g;
            s - 1] - 1] = 1;
            dss - 1] = 1;
      }
    }
    for (int i = 1; i < ren; i++){
      if (dss && dss){
            ok = 0;
            for (int j = 0; j < juhui; j++){
                if (s && s){
                  ok = 1;
                }
            }
            if (!ok){
                cout << "No" << endl;
                return 0;
            }
      }
      else{
            cout << "No" << endl;
            return 0;
      }
    }
    cout << "Yes" << endl;

    return 0;
}

元豪 发表于 2023-4-29 16:39:13

问题再次被自己解决,看看谁懂吧{:10_257:}{:10_257:}

元豪 发表于 2023-4-29 16:28:37

@zhangjinxuan @isdkz @歌者文明清理员 @sfqxx

sfqxx 发表于 2023-4-29 16:29:44

元豪 发表于 2023-4-29 16:28
@zhangjinxuan @isdkz @歌者文明清理员 @sfqxx

你那个鱼CR3不打了?

isdkz 发表于 2023-4-29 16:30:57

你的代码在处理输入和判断参加聚会的人的情况时存在一些问题。你可以尝试使用以下代码,这个代码修复了你的代码中的问题并通过了测试样例。

#include <bits/stdc++.h>
using namespace std;

const int N = 101;

bool g;
int n, m;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    cin >> n >> m;
    for (int i = 0; i < m; ++i) {
      int k;
      cin >> k;
      for (int j = 0; j < k; ++j) {
            int x;
            cin >> x;
            g = true;
      }
    }

    for (int i = 1; i <= n; ++i) {
      for (int j = i + 1; j <= n; ++j) {
            bool ok = false;
            for (int k = 0; k < m; ++k) {
                if (g && g) {
                  ok = true;
                  break;
                }
            }
            if (!ok) {
                cout << "No" << endl;
                return 0;
            }
      }
    }
    cout << "Yes" << endl;

    return 0;
}


这个代码中,使用bool g数组来表示参加聚会的人。数组下标 i 和 j 分别表示第 i 个人和第 j 次聚会。对于任意的 i 和 j, g[i]为true表示第 i 个人参加了第 j 次聚会, g]为false表示第 i 个人没有参加第 j 次聚会。

然后,代码遍历每个人 i(1 <= i <= n)和每个人 j(i + 1 <= j <= n),判断他们是否有一个共同的聚会。如果找到一个共同的聚会(即存在一个 k,满足g[i]和g都为true ),则继续检查其他人。如果没有找到共同的聚会,输出 "No" 并返回。

如果所有的人都有至少一个共同的聚会,那么输出 "Yes"。

sfqxx 发表于 2023-4-29 16:31:47

本帖最后由 sfqxx 于 2023-4-29 16:39 编辑

在程序中,首先使用二维数组`g`和`h`存储了每个聚会参与的人员。然后定义`s`存储第i个人是否参加了第j次聚会。

问题在于存储`s`数组中行列下标取反。

原因是:题目中给出的人的编号从1开始,而程序中数组下标从0开始,所以在将人的编号对应到矩阵中的行时需要减一,而将聚会的编号对应到矩阵中的列时也需要减一。

修改如下:

s-1]-1] = 1; // 修改为 s-1]-1] = 1;


这样就可以通过所有的测试点了。

isdkz 发表于 2023-4-29 16:35:30

首先,你的代码中使用了int g和int s ,但这两个数组的大小不需要那么大。使用一个bool g数组就足够了。同时,我发现你的代码中对数组 s 的更新存在问题。你的代码中还使用了dss数组,但实际上并不需要这个数组。

你的代码中,你用freopen("input.in", "r", stdin);打开了一个名为 "input.in" 的文件,这可能会导致本地运行时输入错误。在提交到在线评测系统时,不需要这一行代码。

接下来是我修改的代码,我会在注释中解释问题:

#include <bits/stdc++.h>
using namespace std;

const int N = 101;

bool g;
int n, m;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    cin >> n >> m;
    for (int i = 0; i < m; ++i) {
      int k;
      cin >> k;
      for (int j = 0; j < k; ++j) {
            int x;
            cin >> x;
            // 修复:将参加聚会的人的信息存储在 g 数组中
            g = true;
      }
    }

    for (int i = 1; i <= n; ++i) {
      for (int j = i + 1; j <= n; ++j) {
            bool ok = false;
            for (int k = 0; k < m; ++k) {
                // 修复:检查 i 和 j 是否参加了同一个聚会
                if (g && g) {
                  ok = true;
                  break;
                }
            }
            // 问题:你的代码在判断 i 和 i - 1 之间的关系时存在问题
            // 修复:修改为检查 i 和 j 之间的关系
            if (!ok) {
                cout << "No" << endl;
                return 0;
            }
      }
    }
    cout << "Yes" << endl;

    return 0;
}


我将你的代码中的问题和修复用注释标明,希望这对你有帮助。

元豪 发表于 2023-4-29 16:36:22

sfqxx 发表于 2023-4-29 16:29
你那个鱼CR3不打了?

打完楼~

元豪 发表于 2023-4-29 16:38:29

sfqxx 发表于 2023-4-29 16:31
在程序中,首先使用二维数组`g`和`h`存储了每个聚会参与的人员。然后定义`s`存储 ...

你什么都没有改变哦~

sfqxx 发表于 2023-4-29 16:39:22

元豪 发表于 2023-4-29 16:38
你什么都没有改变哦~

不行,再去问问

元豪 发表于 2023-4-29 16:39:42

sfqxx 发表于 2023-4-29 16:39
不行,再去问问

hhhhhh

sfqxx 发表于 2023-4-29 16:45:09

元豪 发表于 2023-4-29 16:39
hhhhhh

isdkz是对的

isdkz 发表于 2023-4-29 16:48:26

sfqxx 发表于 2023-4-29 16:45
isdkz是对的

我还是很相信gpt4的能力的{:10_256:}

元豪 发表于 2023-4-29 16:55:55

isdkz 发表于 2023-4-29 16:48
我还是很相信gpt4的能力的

果然又是gpt{:10_256:}

sfqxx 发表于 2023-4-29 16:59:45

isdkz 发表于 2023-4-29 16:48
我还是很相信gpt4的能力的

要money吗?
哪个网址?
别告诉我是ai.com

isdkz 发表于 2023-4-29 17:00:38

sfqxx 发表于 2023-4-29 16:59
要money吗?
哪个网址?
别告诉我是ai.com

money肯定是要的,确实就是 ai.com ,不是官方的 gpt4 很多都是假的

sfqxx 发表于 2023-4-29 17:01:45

isdkz 发表于 2023-4-29 17:00
money肯定是要的,确实就是 ai.com ,不是官方的 gpt4 很多都是假的

不过这样也值
小甲鱼:相当于我替你出了钱{:10_266:}

isdkz 发表于 2023-4-29 17:09:04

sfqxx 发表于 2023-4-29 17:01
不过这样也值
小甲鱼:相当于我替你出了钱

确实还是挺值的,效率提高很多{:10_256:}
页: [1]
查看完整版本: 蒟蒻求助!!