QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#33575 | #1429. Hit | chenxia25 | WA | 2ms | 10172kb | C++20 | 6.1kb | 2022-06-03 19:58:43 | 2022-06-03 19:58:44 |
Judging History
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