鱼C论坛

 找回密码
 立即注册
查看: 1692|回复: 2

求助

[复制链接]
发表于 2023-11-23 23:00:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define x first
  4. #define y second
  5. typedef pair<int,int>pii;
  6. const int N=1e5+10;
  7. int n,d,k;
  8. int cnt[N];
  9. pii logs[N];
  10. bool st[N];//记录是否为热帖

  11. int main()
  12. {
  13.     scanf("%d%d%d",&n,&d,&k);
  14.     for(int i=0;i<n;i++)scanf("%d%d", &logs[i].x, &logs[i].y);
  15.     sort(logs,logs+n);
  16.     for(int i=0,j=0;i<n;i++)
  17.     {
  18.         int id=logs[i].y;
  19.         cnt[id]++;
  20.         while(logs[i].x-logs[j].x>=d)
  21.         {
  22.             cnt[logs[j].y]--;
  23.             j++;
  24.         }
  25.         if(cnt[id]>=k)st[id]=true;


  26.     }
  27.     for(int i=0;i<=10000;i++)
  28.     {
  29.         if(st[i])
  30.         {
  31.             cout<<i<<endl;
  32.         }
  33.     }

  34. }




  35. //暴力写直接会超时,因为n的平方的复杂度
  36. //n的数据范围大
复制代码

洛谷为什么这样写全wa呢,呜呜呜
题目链接:https://www.luogu.com.cn/problem/P8661
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-23 23:01:33 | 显示全部楼层
你好!看到你提供的代码,它似乎存在一些问题。首先,第5行应该是`typedef pair<int, int> pii;`而不是`typedef pairpii;`;其次,第9行的`#define x first`和`#define y second`应该放在`typedef`语句后面,以避免宏定义的错误使用。此外,在第19行中的循环条件应该是`i<n`,而不是`i=k`,并且在循环体内需要加上`i++`表示每轮循环结束后 i 的递增。最后,可以删除掉第20行和第25行的多余括号。

这里是修改后的代码:
  1. #include <iostream>
  2. using namespace std;
  3. typedef pair<int, int> pii;
  4. const int N = 1e5 + 10;
  5. int main()
  6. {
  7.     int n, d, k;
  8.     bool st = false;
  9.     pii logs[N];
  10.     cin >> n >> d >> k;
  11.     for (int i = 0; i < n; i++) {
  12.         cin >> logs[i].first >> logs[i].second;
  13.         if (logs[i].second >= k) {
  14.             st = true;
  15.         }
  16.     }
  17.     for (int i = 0; i < n; i++) {
  18.         if (st && logs[i].first == 0 && logs[i].second >= d) {
  19.             cout << i + 1 << endl;
  20.         } else if (!st && logs[i].second >= d) {
  21.             cout << i + 1 << endl;
  22.         }
  23.     }
  24.     return 0;
  25. }
复制代码

以上是修改后的代码,你可以尝试运行看看是否能够达到你想要的效果。如果还有其他问题,请随时提问。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-23 23:03:57 | 显示全部楼层
根据你提供的代码,我注意到有几个问题可能导致错误或编译问题:

1. 在代码的开头使用 #include <bits/stdc++.h> 可能会导致编译错误,因为这是一个非标准的头文件,不是所有编译器都支持。建议使用具体的标准头文件,如 <iostream>, <algorithm>, <vector> 等,并根据代码中使用的实际头文件进行包含。

2. 代码中缺少了 return 0; 语句作为 main() 函数的返回值。

3. 在最后输出结果时,使用了 cout 流进行输出。如果你使用的是 C++ 编译器,应该可以正常工作。但是,由于你在代码开头使用了 using namespace std;,这可能导致命名空间冲突和函数重定义问题。为了避免潜在的问题,建议使用 printf 函数进行输出,而不是 cout 流。

修正后的代码如下所示:
  1. ++
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <vector>
  5. using namespace std;
  6. typedef pair<int, int> pii;
  7. const int N = 1e5 + 10;
  8. int n, d, k;
  9. int cnt[N];
  10. pii logs[N];
  11. bool st[N]; // 记录是否为热帖
  12. int main() {
  13.     scanf("%d%d%d", &n, &d, &k);
  14.     for (int i = 0; i < n; i++) {
  15.         scanf("%d%d", &logs[i].first, &logs[i].second);
  16.     }
  17.     sort(logs, logs + n);
  18.     for (int i = 0, j = 0; i < n; i++) {
  19.         int id = logs[i].second;
  20.         cnt[id]++;
  21.         while (logs[i].first - logs[j].first >= d) {
  22.             cnt[logs[j].second]--;
  23.             j++;
  24.         }
  25.         if (cnt[id] >= k) {
  26.             st[id] = true;
  27.         }
  28.     }
  29.     for (int i = 0; i <= 10000; i++) {
  30.         if (st[i]) {
  31.             printf("%d\n", i);
  32.         }
  33.     }
  34.     return 0;
  35. }
复制代码

请注意,以上修改仅涉及到代码的语法和潜在问题,无法保证解决你提到的 "洛谷" 的 WA(Wrong Answer)问题。WA 的原因可能是算法逻辑上的错误,或者其他细节问题。建议你检查算法逻辑以及输入输出格式是否符合题目要求,并对不同测试用例进行调试和测试。

如果问题仍然存在,请提供更多关于 "洛谷" 的详细信息,例如具体的错误提示、示例输入输出等,以便我能够更好地帮助你解决问题。

回复来自于CHAT-GPT。回复仅供参考,如有人工回答,最佳答案请优先选择人工
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-21 14:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表