QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#51665#4887. Fast Bridgeszhoukangyang#WA 3ms4824kbC++112.0kb2022-10-03 12:36:482022-10-03 12:36:50

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-10-03 12:36:50]
  • 评测
  • 测评结果:WA
  • 用时:3ms
  • 内存:4824kb
  • [2022-10-03 12:36:48]
  • 提交

answer

#include<bits/stdc++.h>
#define L(i, j, k) for(int i = (j); i <= (k); ++i)
#define R(i, j, k) for(int i = (j); i >= (k); --i)
#define ll long long 
#define ull unsigned long long 
#define vi vector <int>
#define sz(a) ((int) (a).size())
#define me(f, x) memset(f, x, sizeof(f)) 
#define uint unsigned int
using namespace std;
const int N = 507, mod = 998244353, iv3 = (mod + 1) / 3;

int n, k;
struct tup {
	int xl, xr, yl, yr;
} f[N];

int dis[N][N];
int arrx[N], arry[N], atotx, atoty; 
bool vis[N];
int t[N]; 
int a[12][12][12][12];
int work(vector < pair < int, int > > vp) {
	int ns = 0;
	me(a, 0);
	for(auto u : vp) {
		int A = u.first, B = u.second;
		L(h, 1, f[A].xl) 
			L(j, 1, f[A].yl) 
				L(k, 1, f[B].xr) 
					L(l, 1, f[B].yr) 
						ns += !a[h][j][k][l], a[h][j][k][l] = 1;
	}
	return ns;
}

vector < pair < int, int > > vq[N];
int solve(vector < tup > T) {
	n = sz(T);
	L(i, 1, sz(T)) f[i] = T[i - 1];
	me(dis, 0x3f);
	L(i, 1, n) dis[i][i] = 0; 
	L(i, 1, n) L(j, 1, n) if(f[i].xr <= f[j].xl && f[i].yr <= f[j].yl) dis[i][j] = 1;
	L(k, 1, n) L(i, 1, n) L(j, 1, n) dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
	L(i, 0, n) vq[i].clear();
	L(i, 1, n) L(j, 1, n) if(dis[i][j] < n) vq[dis[i][j]].emplace_back(make_pair(i, j)); 
	L(i, 1, n) f[i].xr = k - f[i].xr + 1, f[i].yr = k - f[i].yr + 1; 
	int qwq = 0; 
	L(i, 0, n - 1) if(sz(vq[i])) qwq += work(vq[i]), qwq %= mod;
	return qwq;
}

int main() {
	ios :: sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	int n;
	cin >> n >> k;
	if(n) assert(k <= 10);
	vector < tup > A, B;
	while(n--) {
		tup a;
		cin >> a.xl >> a.yl >> a.xr >> a.yr;
		if(a.yl > a.yr) {
			a.yl = k - a.yl + 1;
			a.yr = k - a.yr + 1;
			A.push_back(a);
		} else {
			B.push_back(a);
		}
	}
	int ns = (ll) (k + 1) * k % mod * (k - 1) % mod * iv3 % mod * k % mod * k % mod;
	(ns += mod - solve(A)) %= mod;
	(ns += mod - solve(B)) %= mod;
	cout << ns << '\n';
	return 0;
}
/*
2 5
3 3 4 5
3 3 5 4
*/

詳細信息

Test #1:

score: 100
Accepted
time: 3ms
memory: 4608kb

input:

2 2
1 1 2 2
1 2 2 1

output:

6

result:

ok answer is '6'

Test #2:

score: 0
Accepted
time: 2ms
memory: 4736kb

input:

0 1000000000

output:

916520226

result:

ok answer is '916520226'

Test #3:

score: 0
Accepted
time: 3ms
memory: 4824kb

input:

5 5
1 1 3 3
3 3 5 1
3 3 4 5
3 3 5 4
1 5 3 3

output:

946

result:

ok answer is '946'

Test #4:

score: -100
Wrong Answer
time: 1ms
memory: 4664kb

input:

200 5
1 1 4 2
2 5 4 4
2 3 4 2
2 4 3 5
1 4 4 2
2 5 4 2
1 2 4 4
1 2 2 4
1 4 5 1
3 4 5 1
4 2 5 1
2 2 5 4
3 2 5 1
3 1 5 2
4 2 5 3
1 3 5 1
3 4 4 5
2 2 4 3
2 3 5 4
1 4 5 3
2 2 3 1
2 5 3 3
1 1 5 3
4 4 5 5
1 3 4 4
4 3 5 1
2 3 3 4
3 4 4 2
1 4 4 5
2 1 4 4
1 3 5 2
1 1 3 3
1 5 3 1
1 1 3 5
1 4 3 5
4 5 5 4
1 1 4 ...

output:

728

result:

wrong answer expected '708', found '728'