QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#515339 | #5507. Investors | HBC2021 | TL | 6909ms | 169400kb | C++14 | 1.3kb | 2024-08-11 17:15:12 | 2024-08-11 17:15:12 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int rp=1,ac=0;
char ch = getchar();
for(;ch>'9' || ch<'0';ch=getchar()){if(ch=='-') rp=-1;}
for(;ch<='9'&&ch>='0';ch=getchar()){ac*=10;ac+=ch-'0';}
return rp*ac;
}
const int N = 6e3 + 10;
int dp[N][N],cnt[N][N],a[N];
void solve(int l,int r,int l1,int r1,int k){
if(l > r) return;
int mid = (l+r)>>1,mid1 = l1;
for(int i = l1; i <= max(r1,mid); i++){
if(dp[k][mid] > dp[k-1][i]+cnt[i+1][mid]){
dp[k][mid] = dp[k-1][i]+cnt[i+1][mid];
mid1 = i;
}
}
solve(l,mid-1,l1,mid1,k);
solve(mid+1,r,mid1,r,k);
}
int T,n,k;
signed main(){
T = read();
while(T--){
memset(cnt,0,sizeof(cnt));
n = read();
k = read()+1;
for(int i = 1; i <= n; i++) a[i] = read();
for(int i = 1; i <= n; i++){
for(int j = i+1; j <= n; j++){
if(a[i] > a[j])cnt[i][j]++;
}
}
for(int i = 1; i <= n; i++){
for(int j = i+1; j < n; j++){
cnt[i][j+1] += cnt[i][j];
}
}
for(int i = n; i > 1; i--){
for(int j = i+1; j <= n; j++){
cnt[i-1][j] += cnt[i][j];
}
}
for(int i = 1; i <= k; i++){
for(int j = 1; j <= n; j++){
dp[i][j] = 1e9;
}
}
for(int i = 1; i <= n; i++) dp[1][i] = cnt[1][i];
for(int i = 2; i <= k; i++) solve(1,n,1,n,i);
cout<<dp[k][n]<<"\n";
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 23ms
memory: 145848kb
input:
2 6 1 4 5 6 2 2 1 6 2 4 5 6 2 2 1
output:
2 0
result:
ok 2 lines
Test #2:
score: 0
Accepted
time: 4154ms
memory: 147024kb
input:
349 6 2 2 1 2 1 2 1 48 12 42 47 39 39 27 25 22 44 45 13 5 48 38 4 37 6 24 10 42 38 12 37 31 19 44 6 29 17 7 12 7 26 35 24 15 9 37 3 27 21 33 29 34 20 14 30 31 21 48 12 1 43 17 46 17 39 40 22 25 2 22 12 4 11 38 12 4 11 1 5 39 44 37 10 19 20 42 45 2 45 37 20 48 34 16 41 23 18 13 44 47 21 29 4 23 18 16...
output:
1 18 15 145 0 2 1 0 13 13 23 0 0 0 1 0 0 0 0 0 0 0 0 161 3 0 0 1 0 0 0 0 0 0 1 0 3 0 0 1 0 0 1 0 0 1 4 0 0 0 0 0 0 0 0 2 0 2 0 0 8 280 0 0 34 4 0 1 0 0 3 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 2 0 0 0 0 0 0 0 8 1 8 0 0 0 0 1 11 5 0 0 0 6 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 13 1 0 0 0 ...
result:
ok 349 lines
Test #3:
score: 0
Accepted
time: 207ms
memory: 156860kb
input:
6 1000 333 84886 84887 84732 83775 83776 83777 81234 80288 79661 79243 79244 78520 78521 78522 78523 78524 78525 79041 79042 78509 78120 77073 77432 77433 76111 75362 75363 75364 75365 75366 73979 73980 73981 73982 73983 73984 73472 73473 73075 72948 72949 72727 72728 72383 72384 72272 72273 72274 7...
output:
0 15 683 156 8 242025
result:
ok 6 lines
Test #4:
score: 0
Accepted
time: 6909ms
memory: 169400kb
input:
1 6000 1000 35 111 78 14 3 104 13 88 52 138 47 116 208 21 169 90 149 132 146 223 65 193 176 174 175 233 18 164 102 141 163 159 48 85 184 201 215 237 89 139 179 172 68 73 216 80 143 221 61 60 42 207 219 16 43 225 120 44 1 196 157 202 194 137 156 145 27 40 70 217 170 91 77 92 34 54 29 51 140 198 49 18...
output:
847
result:
ok single line: '847'
Test #5:
score: -100
Time Limit Exceeded
input:
1 6000 2990 1500 1499 1498 1497 1496 1495 1494 1493 1492 1491 1490 1489 1488 1487 1486 1485 1484 1483 1482 1481 1480 1479 1478 1477 1476 1475 1474 1473 1472 1471 1470 1469 1468 1467 1466 1465 1464 1463 1462 1461 1460 1459 1458 1457 1456 1455 1454 1453 1452 1451 1450 1449 1448 1447 1446 1445 1444 144...