20pts 代码求调
查看原帖
20pts 代码求调
482347
ZZQF5677楼主2022/7/19 23:42
#include <bits/stdc++.h>
using namespace std;
int n, m, p[1005], s[1005], ta, tb, tc, td, A, H, E, R;
struct Node {
  int pr, sr, sc;
} a[100005];
int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') {
      f = -1;
    }
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0', ch = getchar();
  }
  return x * f;
}
struct Node1 {
  int c;  // 该同学评测次数。
  map<int /*题目编号*/, vector<int> /*储存该题目评测记录*/> mp;
};
map<int, Node1> st;
int pt, lg;
int main() {
  n = read();
  m = read();
  for (int i = 1; i <= n; i++) {
    p[i] = read();
  }
  for (int i = 1; i <= m; i++) {
    s[i] = read();
  }
  ta = read();
  tb = read();
  tc = read();
  td = read();
  A = read();
  H = read();
  E = read();
  R = read();
  for (int i = 1; i <= R; i++) {
    a[i].pr = read();
    a[i].sr = read();
    a[i].sc = read();
    st[a[i].sr].c++;
    // st[a[i].sr]->s
    st[a[i].sr].mp[a[i].pr].push_back(a[i].sc);
  }
  pt = pt + n * ta;
  for (int i = 1; i <= m; i++) {
    pt = pt + min(st[s[i]].c * tb, ta + tc * st[s[i]].c);
    int sum = 0;
    for (auto j = st[s[i]].mp.begin(); j != st[s[i]].mp.end(); j++) {
      int maxx = 0;
      for (int k = 0; k < j->second.size(); k++) {
        if (j->second[k] > maxx) {
          maxx = j->second[k];
          sum++;
        }
      }
    }
    cout << sum << "\n";
    pt = pt + (sum * td);
  }
  lg = (R * tc + n * ta) * 100 / A + H;
  printf("%d\n%d\n", pt, lg);
  if (lg <= pt) {
    puts("Use Luogu!");
  } else {
    puts("Forget it...");
  }
  return 0;
}

这一组数据 WA 了。

输入:

2 3
4 2 
2 5 4 
54 47 14 13 94 124 0
10
4 4 90
4 2 50
2 4 90
4 4 90
2 5 40
4 5 60
4 2 30
2 2 80
4 2 20
2 2 20

输出:

509
387
Use Luogu!

但是程序却输出:

488
387
Use Luogu!

求调,给关注。

(((

2022/7/19 23:42
加载中...