QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#713591 | #2472. Counting Haybales | _8_8_ | 71.428571 | 99ms | 144888kb | C++23 | 2.2kb | 2024-11-05 19:55:12 | 2024-11-05 19:55:13 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 5e3 + 1, MOD = (int)1e9 + 7;
int n, h[N], dp[N][N], pref[N][2], mx[N][N], mn[N][N];
bool ok(int x, int y) {
if(x < y) {
if(mx[x + 1][y] > h[x] + 1 || mn[x + 1][y] < h[x] - 1) return false;
} else {
if(mx[y + 1][x - 1] > h[x] + 1 || mn[y + 1][x - 1] < h[x] - 1) return false;
}
return true;
}
void add(int &x, int y) {
x += y;
if(x >= MOD) x -= MOD;
}
void test() {
memset(dp, 0, sizeof(dp));
vector<int> e, o;
cin >> n;
for(int i = 1; i <= n; i++) {
cin >> h[i];
if(h[i] & 1) {
o.push_back(i);
} else {
e.push_back(i);
}
}
for(int i = 1; i <= n; i++) {
mx[i][i - 1] = 0;
mn[i][i - 1] = 1e9 + 10;
for(int j = i; j <= n; j++) {
mx[i][j] = mx[i][j - 1];
mn[i][j] = mn[i][j - 1];
if(h[j] & 1) {
mx[i][j] = max(mx[i][j], h[j]);
mn[i][j] = min(mn[i][j], h[j]);
}
}
}
if(e.empty() || o.empty()) {
cout << 1 << '\n';
return;
}
for(int i:e) {
if(ok(i, 0)) {
dp[i][0] = 1;
} else {
break;
}
}
int res = dp[e.back()][0];
for(int i = 0; i < (int)e.size(); i++) {
for(int j = 0; j < (int)o.size(); j++) {
int x = e[i], y = o[j];
if(ok(x, y)) {
if(i) {
add(dp[x][y], dp[e[i - 1]][0]);
add(dp[x][y], pref[j][1]);
} else {
add(dp[x][y], 1);
}
}
if(i == (int)e.size() - 1) {
add(res, dp[x][y]);
}
if(j) pref[j][0] = pref[j - 1][0];
else pref[j][0] = 0;
add(pref[j][0], dp[x][y]);
}
for(int j = 0; j < (int)o.size(); j++) {
swap(pref[j][0], pref[j][1]);
}
}
cout << res << '\n';
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int t = 1;
cin >> t;
while(t--) {
test();
}
}
详细
Pretests
Final Tests
Test #1:
score: 4.7619
Accepted
time: 50ms
memory: 104496kb
input:
7 4 2 2 2 3 4 3 3 1 2 4 5 3 4 2 6 3 3 1 1 2 2 6 1 3 3 4 1 2 6 4 1 2 3 5 4 10 1 5 6 6 6 4 2 3 2 5
output:
4 4 5 15 9 8 19
result:
ok 7 lines
Test #2:
score: 4.7619
Accepted
time: 88ms
memory: 103620kb
input:
10 10 447773962 773442532 122816 137572579 324627123 157577940 253498609 99147813 425825313 199995380 10 416515986 416515986 416515987 416515987 416515988 416515988 416515989 416515989 416515988 416515989 10 563229302 563229301 563229301 563229302 563229301 563229300 563229300 563229301 563229302 56...
output:
1 186 210 133 150 133 175 231 155 154
result:
ok 10 lines
Test #3:
score: 4.7619
Accepted
time: 88ms
memory: 104920kb
input:
10 10 468145963 198730372 27838076 590195590 467423861 520495379 451366491 344173378 354694313 165814381 10 219739800 219739801 219739801 219739800 219739799 219739799 219739798 219739798 219739798 219739799 10 568161994 568161995 568161994 568161994 568161994 568161994 568161993 568161994 568161995...
output:
1 186 120 120 51 231 252 115 252 231
result:
ok 10 lines
Test #4:
score: 0
Memory Limit Exceeded
input:
1 5000 2 1 3 3 1 1 2 2 3 2 3 1 1 1 1 1 1 1 2 3 1 1 2 2 2 1 1 2 3 2 2 3 1 3 2 3 1 2 2 2 1 1 3 2 2 1 1 2 2 3 3 3 1 1 1 3 2 3 3 1 3 1 3 1 3 3 3 2 2 2 1 2 2 3 2 3 2 1 1 1 2 2 2 3 1 2 1 1 2 2 3 2 2 3 1 3 1 2 2 1 1 3 1 1 2 3 1 3 2 2 2 2 3 2 3 2 3 3 3 1 2 3 3 2 2 2 2 3 1 2 2 1 1 1 1 3 3 1 1 1 3 2 2 1 3 2 2...
output:
493836655
result:
Test #5:
score: 4.7619
Accepted
time: 91ms
memory: 124424kb
input:
10 500 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 1...
output:
523068127 490281121 335146668 378222245 662250428 677229935 432072782 2379013 65560564 320300148
result:
ok 10 lines
Test #6:
score: 4.7619
Accepted
time: 90ms
memory: 123516kb
input:
10 500 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101...
output:
523068127 580931200 279753758 9368367 561595432 690890919 369268447 846226737 285457745 261543809
result:
ok 10 lines
Test #7:
score: 0
Memory Limit Exceeded
input:
1 5000 2 3 2 3 6 5 6 8 8 11 11 11 13 14 15 16 17 18 19 21 21 23 24 24 25 25 27 27 29 31 32 33 34 34 35 37 38 39 40 40 40 43 44 43 46 46 48 48 50 50 51 52 52 53 56 55 57 57 58 61 62 62 64 64 64 67 68 69 69 71 72 73 74 75 75 77 76 77 79 81 82 82 84 84 85 87 88 88 89 91 91 93 94 93 94 97 97 97 100 101 ...
output:
290956746
result:
Test #8:
score: 4.7619
Accepted
time: 79ms
memory: 109012kb
input:
10 100 1 1 4 2 2 4 3 2 4 2 3 2 3 1 1 2 2 1 2 3 3 4 4 2 2 2 1 3 2 3 4 3 1 2 2 4 4 2 1 4 3 2 4 4 1 1 3 4 4 4 1 2 3 2 4 2 3 1 2 1 1 2 2 3 2 4 2 2 2 2 4 2 4 4 2 1 3 1 2 1 2 3 2 2 3 2 2 4 2 2 3 2 2 4 4 4 1 2 3 2 100 2 3 2 3 3 3 3 2 2 2 1 3 1 2 3 4 3 3 3 3 4 2 3 4 1 1 2 3 3 3 1 4 4 1 4 2 4 3 2 3 4 4 1 3 2...
output:
762655378 567764360 228518291 538721530 87546958 974544188 16895117 983492342 273849796 708122840
result:
ok 10 lines
Test #9:
score: 4.7619
Accepted
time: 90ms
memory: 108148kb
input:
10 100 4 1 4 1 4 2 3 4 1 2 1 3 2 4 2 2 3 4 2 4 3 1 3 3 4 2 3 4 3 1 2 2 2 2 4 4 2 1 1 2 1 2 4 3 1 2 2 1 1 2 1 3 2 4 4 3 2 3 4 1 1 2 2 2 2 3 4 3 4 2 2 1 2 1 2 3 4 1 3 2 1 3 3 1 4 3 1 1 2 4 4 1 4 3 3 2 1 1 2 2 100 1 2 3 2 1 4 1 4 3 3 1 2 3 3 4 3 4 2 2 3 3 2 3 3 3 3 2 2 1 1 1 1 2 2 2 4 1 4 3 1 3 3 3 4 2...
output:
46441250 54311602 250886215 794423726 648710286 557560030 81113960 925275253 859511541 923517702
result:
ok 10 lines
Test #10:
score: 4.7619
Accepted
time: 99ms
memory: 106624kb
input:
10 100 1 2 3 2 2 1 1 2 1 1 1 4 2 1 1 1 1 2 2 2 1 2 4 2 4 3 1 4 3 3 3 1 4 1 3 4 3 3 3 4 2 3 3 3 4 3 2 4 4 2 4 4 4 1 1 1 3 1 4 2 3 1 4 4 4 4 1 3 1 3 4 4 4 1 4 3 2 1 2 1 3 2 2 3 2 1 2 4 4 4 1 4 3 2 3 2 4 2 1 4 100 3 1 3 1 2 2 1 2 1 3 1 1 4 1 1 1 1 1 2 3 2 4 3 2 4 1 2 4 4 2 1 1 2 4 1 4 2 1 2 1 2 3 2 2 1...
output:
621199694 33992159 596987282 686898161 413935763 385374226 400768792 8955878 825420054 312467980
result:
ok 10 lines
Test #11:
score: 4.7619
Accepted
time: 95ms
memory: 107740kb
input:
10 100 8 3 1 5 7 5 8 9 5 6 3 1 2 8 8 3 2 3 1 2 7 7 10 9 1 4 6 9 9 2 7 1 8 9 3 8 10 6 8 2 6 5 2 8 4 6 7 2 5 9 5 2 7 3 6 1 7 1 7 8 9 1 6 7 10 4 4 6 1 4 4 5 2 1 9 9 1 5 7 2 6 8 9 2 2 8 9 9 4 4 8 6 3 9 9 10 4 5 2 9 100 4 3 1 2 9 9 2 7 4 6 10 5 10 4 5 6 9 2 3 2 6 4 10 7 6 4 6 1 1 6 4 2 1 1 4 3 4 7 8 3 1 ...
output:
2488320 629856000 258048 20321280 183500786 64512 335923200 3175200 13996800 906992640
result:
ok 10 lines
Test #12:
score: 4.7619
Accepted
time: 87ms
memory: 109864kb
input:
10 100 193563111 193563110 193563109 193563108 193563109 193563108 193563109 193563109 193563110 193563111 193563110 193563110 193563109 193563111 193563110 193563109 193563108 193563110 193563109 193563107 193563108 193563110 193563110 193563110 193563109 193563110 193563108 193563107 193563106 193...
output:
725199468 872897576 382289091 242465517 742404204 320509008 320509008 338635045 538992043 742404204
result:
ok 10 lines
Test #13:
score: 4.7619
Accepted
time: 91ms
memory: 107844kb
input:
10 100 165531093 165531092 165531090 165531090 165531088 165531089 165531089 165531090 165531091 165531090 165531090 165531091 165531089 165531089 165531089 165531087 165531088 165531088 165531086 165531086 165531085 165531084 165531084 165531083 165531084 165531083 165531084 165531084 165531085 165...
output:
977126526 360509330 504170368 74201732 273521609 382289091 120934403 137205613 742404204 137205613
result:
ok 10 lines
Test #14:
score: 4.7619
Accepted
time: 55ms
memory: 143932kb
input:
5 1000 835051605 835051606 835051607 835051608 835051609 835051609 835051608 835051608 835051609 835051610 835051609 835051609 835051609 835051610 835051610 835051609 835051609 835051608 835051607 835051607 835051606 835051606 835051606 835051606 835051605 835051606 835051606 835051606 835051604 835...
output:
93384863 568698435 969293251 826421027 573539193
result:
ok 5 lines
Test #15:
score: 4.7619
Accepted
time: 56ms
memory: 142440kb
input:
5 1000 551842461 551842460 551842459 551842459 551842457 551842457 551842459 551842458 551842456 551842455 551842456 551842458 551842459 551842457 551842457 551842458 551842456 551842456 551842455 551842454 551842452 551842451 551842453 551842451 551842453 551842453 551842453 551842454 551842453 551...
output:
167959558 386342361 519316672 524108839 744133081
result:
ok 5 lines
Test #16:
score: 4.7619
Accepted
time: 59ms
memory: 142208kb
input:
5 1000 911411059 911411057 911411057 911411055 911411055 911411053 911411054 911411055 911411056 911411055 911411055 911411055 911411054 911411055 911411056 911411058 911411058 911411058 911411057 911411058 911411059 911411059 911411060 911411060 911411060 911411059 911411059 911411059 911411060 911...
output:
749921974 933593379 262392129 475137418 229257102
result:
ok 5 lines
Test #17:
score: 4.7619
Accepted
time: 69ms
memory: 144888kb
input:
5 1000 239756971 239756970 239756971 239756970 239756969 239756970 239756969 239756970 239756969 239756968 239756969 239756968 239756969 239756969 239756968 239756967 239756966 239756966 239756967 239756966 239756966 239756966 239756966 239756966 239756967 239756965 239756966 239756967 239756967 239...
output:
205752624 180116804 708871014 425431808 621863530
result:
ok 5 lines
Test #18:
score: 0
Memory Limit Exceeded
input:
1 5000 316394141 316394140 316394140 316394141 316394141 316394141 316394141 316394140 316394140 316394141 316394140 316394141 316394141 316394140 316394141 316394141 316394141 316394140 316394140 316394139 316394140 316394139 316394139 316394139 316394139 316394140 316394140 316394140 316394139 316...
output:
651398981
result:
Test #19:
score: 0
Memory Limit Exceeded
input:
1 5000 698334028 698334028 698334027 698334028 698334028 698334028 698334028 698334027 698334027 698334028 698334028 698334028 698334027 698334027 698334027 698334028 698334028 698334027 698334028 698334028 698334027 698334028 698334028 698334027 698334028 698334027 698334028 698334027 698334028 698...
output:
192833632
result:
Test #20:
score: 0
Memory Limit Exceeded
input:
1 5000 104725913 104725912 104725912 104725912 104725912 104725913 104725913 104725913 104725913 104725912 104725913 104725913 104725912 104725912 104725912 104725912 104725913 104725912 104725913 104725912 104725913 104725913 104725913 104725913 104725913 104725912 104725913 104725912 104725913 104...
output:
433813305
result:
Test #21:
score: 0
Memory Limit Exceeded
input:
1 5000 631500634 631500634 631500634 631500633 631500634 631500633 631500634 631500634 631500633 631500633 631500634 631500634 631500634 631500634 631500633 631500633 631500635 631500634 631500634 631500634 631500635 631500635 631500634 631500634 631500634 631500634 631500635 631500634 631500634 631...
output:
218954931