QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#33575#1429. Hitchenxia25WA 2ms10172kbC++206.1kb2022-06-03 19:58:432022-06-03 19:58:44

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-06-03 19:58:44]
  • 评测
  • 测评结果:WA
  • 用时:2ms
  • 内存:10172kb
  • [2022-06-03 19:58:43]
  • 提交

answer

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

namespace temp {
// NORMAL
using ll = long long; // using i128 = __int128_t;
using uint = unsigned; using ull = unsigned long long; // using u128 = __uint128_t;
using db = double; using ld = long double; // using f128 = __float128;
// #define int ll
// #define db ld

using tii = tuple<int, int>; using ti3 = tuple<int, int, int>; using ti4 = tuple<int, int, int, int>;
#define mt(...) make_tuple(__VA_ARGS__)
#define X(x) get<0>(x)
#define Y(x) get<1>(x)
#define Z(x) get<2>(x)
#define W(x) get<3>(x)

using vi = vector<int>; using vii = vector<tii>; using vi3 = vector<ti3>; using vi4 = vector<ti4>;
using vvi = vector<vi>; using vvii = vector<vii>; using vvi3 = vector<vi3>; using vvi4 = vector<vi4>;
#define pf(...) emplace_front(__VA_ARGS__)
#define pb(...) emplace_back(__VA_ARGS__)

#define REP(i, l, r) for(int i = (l); i <= (r); ++i)
#define PER(i, r, l) for(int i = (r); i >= (l); --i)
#define y0 kehaixing
#define y1 yigeiwoligiaogiao
#define SZ(x) ((int)(x).size())
#define ALL(x) (x).begin(), (x).end()
int lowbit(int x) { return x & -x; }
template<class T, class U> void chkmx(T &x, U y) { if(y > x) x = y; }
template<class T, class U> void chkmn(T &x, U y) { if(y < x) x = y; }

// FASTIO
namespace fastio {
// #define fread_io
#ifdef fread_io
char buf[1 << 16], *st, *ed, wbuf[1 << 16], *wst = wbuf, *wed = wbuf + (1 << 16);
char gc() { return st == ed && (ed = (st = buf) + fread(buf, 1, 1 << 16, stdin), st == ed) ? -1 : *st++; }
__attribute__((destructor)) void flush() { fwrite(wbuf, 1, wst - wbuf, stdout), wst = wbuf; }
void pc(char x) { wst == wed && (flush(), 0), *wst++ = x; }
#else
char gc() { return getchar(); } void pc(char x) { putchar(x); }
#endif
#define notspace(x) (!isspace(x) && ~(x))
template<class T = int> T read() {
  T x = 0; char c = gc(); bool ne = false;
  while(!isdigit(c)) ne |= c == '-', c = gc();
  while(isdigit(c)) x = 10 * x + (c ^ 48), c = gc();
  return ne ? -x : x;
}
int reads(char *s) {
  int n = 0; char c = gc();
  while(!notspace(c)) c = gc();
  while(notspace(c)) s[n++] = c, c = gc();
  return s[n] = 0, n;
}
template<class T> void prt(T x) {
  x < 0 && (pc('-'), x = -x);
  x > 9 && (prt(x / 10), 0);
  pc(x % 10 ^ 48);
}
void prts(const char *s, int n = INT_MAX) { while(n-- && *s) pc(*s++); }
} using fastio::gc; using fastio::pc;
using fastio::read; using fastio::reads; using fastio::prt; using fastio::prts;

// MATH
constexpr int P = 0;
constexpr ll lnf = 0x3f3f3f3f3f3f3f3f;
#ifdef int
constexpr int inf = 0x3f3f3f3f3f3f3f3f;
#else
constexpr int inf = 0x3f3f3f3f;
#endif

int gcd(int x, int y) { return __gcd(x, y); }
int exgcd(int a, int b, int &x, int &y) {
  if(!b) return x = 1, y = 0, a;
  int d = exgcd(b, a % b, y, x);
  return y -= a / b * x, d;
}
int qpow(int x, int y = P - 2, int p = P) {
  int res = 1;
  while(y) {
    if(y & 1) res = (ll)res * x % p;
    x = (ll)x * x % p;
    y >>= 1;
  } return res;
}
int inv(int a, int p = P) {
  int x, y, d = exgcd(a, p, x, y);
  if(d != 1) return -1;
  return x < 0 ? x + p : x;
}

namespace modint {
  void addto(int &x, int y) { x += y, x >= P && (x -= P), x < 0 && (x += P); }
  int add(int x, int y) { return x < 0 && (x += P), x += y, x >= P ? x - P : x < 0 ? x + P : x; }
  int add0(int x) { return x < 0 ? x + P : x; }
}
// using namespace modint;

template<int N, int p = P> struct fc_t {
  int iv[N], fc[N], ifc[N];
  fc_t() {
    iv[1] = 1; REP(i, 2, N - 1) iv[i] = (ll)iv[p % i] * (p - p / i) % p;
    fc[0] = ifc[0] = 1; REP(i, 1, N - 1) fc[i] = (ll)fc[i - 1] * i % p, ifc[i] = (ll)ifc[i - 1] * iv[i] % p;
  }
  int operator()(int n, int m) {
    if(m < 0 || m > n) return 0;
    return (ll)fc[n] * ifc[m] % p * ifc[n - m] % p;
  }
};
#define fc_init(...) fc_t<__VA_ARGS__> comb; int *iv = comb.iv, *fc = comb.fc, *ifc = comb.ifc
template<int N, int p = P> struct comb_t {
  int comb[N][N];
  comb_t() {
    comb[0][0] = 1;
    REP(i, 1, N - 1) REP(j, 0, i) comb[i][j] = ((j ? comb[i - 1][j - 1] : 0) + comb[i - 1][j]) % p;
  }
};
#define comb_init(...) comb_t<__VA_ARGS__> _comb; auto comb = _comb.comb
} using namespace temp;

constexpr int N = 2e5 + 10;

int n, m;
int l[N], r[N];
vi nums;
void disc() {
  nums.clear();
  REP(i, 1, n) nums.pb(l[i]), nums.pb(r[i]);
  sort(ALL(nums)), nums.resize(unique(ALL(nums)) - nums.begin());
  m = SZ(nums);
  REP(i, 1, n) {
    l[i] = lower_bound(ALL(nums), l[i]) - nums.begin() + 1;
    r[i] = lower_bound(ALL(nums), r[i]) - nums.begin() + 1;
  }
}

vii nei[N];

int dis[N];
int C[N];
bool spfa() {
  REP(i, 0, m) C[i] = 0;
  REP(i, 0, m) dis[i] = inf;
  dis[0] = 0;
  queue<int> q;
  static bool inq[N];
  q.push(0), inq[0] = true;
  while(SZ(q)) {
    int x = q.front();
    q.pop(), inq[x] = false;
    for(tii e : nei[x]) {
      int y, len; tie(y, len) = e;
      if(dis[x] + len < dis[y]) {
        dis[y] = dis[x] + len;
        C[y] = C[x] + 1;
        if(C[y] >= m) return false; 
        if(!inq[y]) q.push(y), inq[y] = true;
      }
    }
  }
  return true;
}

vi chs;
bool chk(int L) {
  chs.clear();
  REP(i, 0, m) nei[i].clear();
  REP(i, 1, m) nei[i - 1].pb(i, 1), nei[i].pb(i - 1, 0);
  REP(i, 1, n) {
    nei[l[i] - 1].pb(r[i], L);
    nei[r[i]].pb(l[i] - 1, -1);
  }
  if(!spfa()) return false;
  REP(i, 1, m) if(dis[i] > dis[i - 1]) chs.pb(i);
  // cout << "L = " << L << "\n";
  // REP(i, 0, m) cout << dis[i] << " "; puts("which is dis");
  return true;
}

void mian() {
  n = read();
  REP(i, 1, n) l[i] = read(), r[i] = read();
  disc();
  int ans = n;
  PER(i, 20, 0) if(ans > 1 << i && chk(ans - (1 << i))) {
    ans -= 1 << i;
  }
  chk(ans);
  prt(ans), pc(' '), prt(SZ(chs)), pc(' ');
  for(int x : chs) prt(nums[x - 1]), pc(" \n"[x == chs.back()]);
}

bool Med;
signed main() {
  fprintf(stderr, "(%.3lfMB used (not including static!!!))\n", (&Mbe - &Med) / 1048576.);
  // freopen("xxx.in", "r", stdin); freopen("xxx.out", "w", stdout);
  int t = 1;
  t = read();
  while(t--) mian();
  fprintf(stderr, "(%.3lfs used)\n", (db)clock() / CLOCKS_PER_SEC);
  return 0;
}

詳細信息

Test #1:

score: 0
Wrong Answer
time: 2ms
memory: 10172kb

input:

4
4
0 1
2 3
4 5
3 5
5
0 70
0 10
20 30
40 50
60 70
8
-1 7
-2 -1
-9 -7
-8 9
-9 -7
-2 4
-7 4
3 9
5
0 1
0 2
2 3
3 5
4 5

output:

1 3 0 2 4
4 4 0 20 40 60
2 3 -9 -8 3
2 4 0 1 3 4

result:

wrong answer test 3: segment [-2, -1] does not contain any points