QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#163972 | #7120. Soccer | nitrousoxide# | 36 | 173ms | 38680kb | C++14 | 5.1kb | 2023-09-04 17:29:53 | 2023-09-04 17:29:54 |
Judging History
answer
#include "soccer.h"
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 2100;
bool mp[maxn][maxn];
int l[maxn], r[maxn];
struct state{
int l,r,x,y;
int val;
};
bool is_contained(int l1,int r1,int l2,int r2){
return l2 <= l1 & l1 <= r1 & r1 <= r2;
}
bool is_strictly_contained(int l1,int r1,int l2,int r2){
return l2 <= l1 & l1 <= r1 & r1 <= r2 && (l1 != l2 || r1 != r2);
}
inline void update(int & x,int u){
x = max(x, u);
}
int biggest_stadium_task1(int N){
int one_x = -1;
int one_y = -1;
int n = N;
for (int i = 1;i <= n;i++){
for (int j = 1;j <= n;j++){
if (mp[i][j] == 1){
one_x = i;
one_y = j;
break;
}
}
}
return n * n - min(one_x, n+1-one_x) * min(one_y,n+1-one_y);
}
int biggest_stadium_task2(int N){
int n = N;
// initialize dp[l][l][x][y]
vector<state> s1, s2;
int ret = 0;
for (int i = 1;i <= n;i++){
int l = -1;
for (int j = 1;j <= n;j++){
if (mp[i][j] == 0){
if (l == -1) l = j;
}
else{
if (l != -1){
s1.push_back((state){i,i,l,j-1,j-l});
ret = max(ret, j-l);
l = -1;
}
}
}
if (l != -1){
s1.push_back((state){i,i,l,n,n+1-l});
ret = max(ret, n+1-l);
}
}
for (int delta = 0;delta < n - 1;delta++){
s2.clear();
for (auto s : s1){
int l = s.l;
int r = s.r;
int x = s.x;
int y = s.y;
// Growing up?
if (l != 1){
int i = -1;
int j = x;
for (;j <= y;j++){
if (mp[l-1][j] == 0){
if (i == -1) i = j;
}
else{
if (i != -1){
s2.push_back((state){l-1,r,i,j-1,s.val + (j-i)});
ret= max(ret, s.val + (j-i));
i = -1;
}
}
}
if (i != -1){
s2.push_back((state){l-1,r,i,j-1,s.val + (j-i)});
ret= max(ret, s.val+ (j-i));
}
}
// growing down
if (r != n){
int i = -1;
int j = x;
for (;j <= y;j++){
if (mp[r+1][j] == 0){
if (i == -1) i = j;
}
else{
if (i != -1){
s2.push_back((state){l,r+1,i,j-1,s.val + (j-i)});
ret = max(ret, s.val + (j-i));
i = -1;
}
}
}
if (i != -1){
s2.push_back((state){l,r+1,i,j-1,s.val + (j-i)});
ret = max(ret, s.val + (j-i));
}
}
}
s1 = s2;
}
return ret;
}
int biggest_stadium(int N, std::vector<std::vector<int>> F)
{
int n = N;
int ones = 0;
for (int i = 1;i <= n;i++){
for (int j = 1;j <= n;j++){
mp[i][j] = F[i-1][j-1];
ones += mp[i][j];
}
mp[i][0] = 1;
mp[i][n+1] = 1;
}
if (ones == 1){
return biggest_stadium_task1(N);
}
if (n <= 2000){
return biggest_stadium_task2(N);
}
for (int i = 1;i <= n;i++){
l[i] = -1;
r[i] = -1;
for (int j = 1;j <= n;j++){
if (mp[i][j] == 0){
if (l[i] == -1) l[i] = j;
if (r[i] != -1) return -1;
}
else{
if (l[i] != -1 && r[i] == -1) r[i] = j - 1;
}
}
if (r[i] == -1 && l[i] != -1) r[i] = n;
}
l[n+1] = r[n+1] = -1;
int lower = -1, upper = -1;
for (int i = 1;i <= n;i++){
if (l[i] != -1){
if (lower == -1) lower = i;
if (upper != -1) return -1;
}
else{
if (lower != -1 && upper == -1) upper = i - 1;
}
}
if (lower != -1 && upper == -1) upper = n;
bool is_decreasing = false;
for (int i = lower;i < upper;i++){
if (is_contained(l[i], r[i], l[i+1], r[i+1])){
if (is_decreasing && is_strictly_contained(l[i], r[i], l[i+1], r[i+1])) return -1;
}
else if (is_strictly_contained(l[i+1], r[i+1], l[i], r[i])){
if (!is_decreasing) is_decreasing = true;
}
else{
return -1;
}
}
for (int i = lower;i <= upper;i++){
for (int j = i + 1;j <= upper;j++){
if (!is_contained(l[i] ,r[i], l[j], r[j]) && !is_contained(l[j], r[j], l[i], r[i])) return -1;
}
}
int tot = 0;
for (int i = 1;i <= n;i++){
for (int j = 1;j <= n;j++){
if (mp[i][j] == 0) tot++;
}
}
return tot;
}
詳細信息
Subtask #1:
score: 6
Accepted
Test #1:
score: 6
Accepted
time: 1ms
memory: 3760kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 1 0
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 1
result:
ok ok
Test #2:
score: 6
Accepted
time: 1ms
memory: 3764kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 3 0 0 0 0 1 0 0 0 0
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 5
result:
ok ok
Test #3:
score: 6
Accepted
time: 1ms
memory: 4072kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 9850
result:
ok ok
Test #4:
score: 6
Accepted
time: 13ms
memory: 7532kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 236536
result:
ok ok
Test #5:
score: 6
Accepted
time: 173ms
memory: 38680kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 2000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 3786181
result:
ok ok
Test #6:
score: 6
Accepted
time: 1ms
memory: 3816kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 9 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 80
result:
ok ok
Test #7:
score: 6
Accepted
time: 1ms
memory: 3872kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 10 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 99
result:
ok ok
Test #8:
score: 6
Accepted
time: 0ms
memory: 3764kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 3 0 0 0 0 0 0 0 0 1
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 8
result:
ok ok
Test #9:
score: 6
Accepted
time: 1ms
memory: 3772kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 3 0 0 0 0 0 0 1 0 0
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 8
result:
ok ok
Subtask #2:
score: 8
Accepted
Test #10:
score: 8
Accepted
time: 1ms
memory: 5832kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 3 0 0 0 0 1 0 0 1 1
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 5
result:
ok ok
Test #11:
score: 8
Accepted
time: 0ms
memory: 3764kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 3 0 0 0 0 1 1 0 0 1
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 5
result:
ok ok
Test #12:
score: 8
Accepted
time: 1ms
memory: 3876kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 3 0 0 1 0 0 0 1 1 0
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 5
result:
ok ok
Test #13:
score: 8
Accepted
time: 1ms
memory: 4084kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 3 1 0 0 1 0 1 0 0 1
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 4
result:
ok ok
Test #14:
score: 8
Accepted
time: 0ms
memory: 3872kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 3 0 0 1 0 0 0 1 0 0
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 6
result:
ok ok
Test #15:
score: 8
Accepted
time: 0ms
memory: 3808kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 3 0 0 1 0 0 1 0 0 0
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 7
result:
ok ok
Test #16:
score: 8
Accepted
time: 1ms
memory: 3804kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 3 0 0 0 0 0 0 0 0 0
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 9
result:
ok ok
Test #17:
score: 8
Accepted
time: 0ms
memory: 3792kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 3 0 0 0 1 0 0 0 1 0
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 6
result:
ok ok
Test #18:
score: 8
Accepted
time: 0ms
memory: 3804kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 3 0 0 1 1 1 1 0 1 1
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 2
result:
ok ok
Test #19:
score: 8
Accepted
time: 0ms
memory: 3808kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 3 0 0 1 1 0 1 0 1 1
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 3
result:
ok ok
Test #20:
score: 8
Accepted
time: 1ms
memory: 3808kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 3 1 0 1 0 0 0 1 0 0
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 6
result:
ok ok
Subtask #3:
score: 22
Accepted
Dependency #2:
100%
Accepted
Test #21:
score: 22
Accepted
time: 1ms
memory: 3812kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 43
result:
ok ok
Test #22:
score: 22
Accepted
time: 0ms
memory: 3836kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 35
result:
ok ok
Test #23:
score: 22
Accepted
time: 1ms
memory: 3808kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 7 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 1
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 18
result:
ok ok
Test #24:
score: 22
Accepted
time: 1ms
memory: 3800kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 7 0 0 1 1 0 1 0 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 1 0 0 1 0 1 0 0 1 1 0 1 1 0 1 0 1
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 8
result:
ok ok
Test #25:
score: 22
Accepted
time: 1ms
memory: 3808kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 7 0 0 1 1 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 1
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 9
result:
ok ok
Test #26:
score: 22
Accepted
time: 1ms
memory: 3812kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 6
result:
ok ok
Test #27:
score: 22
Accepted
time: 1ms
memory: 3868kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 7 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 0 0 1 1 1 0 0 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 12
result:
ok ok
Test #28:
score: 22
Accepted
time: 1ms
memory: 4080kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 7 1 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 13
result:
ok ok
Test #29:
score: 22
Accepted
time: 1ms
memory: 3884kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 1
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 12
result:
ok ok
Test #30:
score: 22
Accepted
time: 1ms
memory: 3816kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 7 1 1 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 10
result:
ok ok
Test #31:
score: 22
Accepted
time: 1ms
memory: 4088kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 7 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 20
result:
ok ok
Test #32:
score: 22
Accepted
time: 1ms
memory: 4076kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 7 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 21
result:
ok ok
Subtask #4:
score: 0
Memory Limit Exceeded
Dependency #3:
100%
Accepted
Test #33:
score: 18
Accepted
time: 1ms
memory: 3804kb
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 7 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 0 0 1 1
output:
xlqtkQVzqzbOJxjzxlqsyVrlM2kqlbK0 OK 24
result:
ok ok
Test #34:
score: 0
Memory Limit Exceeded
input:
R0R7sb2atQWJ6SAWOjw4ZG7Gwgo5zl9L 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 ...
output:
result:
Subtask #5:
score: 0
Skipped
Dependency #4:
0%
Subtask #6:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
100%
Accepted
Dependency #3:
100%
Accepted
Dependency #4:
0%