QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#239924#5507. InvestorsKLPP#WA 13ms9716kbC++201.6kb2023-11-05 00:40:442023-11-05 00:40:45

Judging History

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

  • [2023-11-05 00:40:45]
  • 评测
  • 测评结果:WA
  • 用时:13ms
  • 内存:9716kb
  • [2023-11-05 00:40:44]
  • 提交

answer

#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
 
using namespace std;
using namespace __gnu_pbds;
typedef long long int lld;
typedef tree<pair<int,int> ,null_type,less<pair<int,int> >,rb_tree_tag,tree_order_statistics_node_update> ordered_set;
#define rep(i,a,b) for(int i=a;i<b;i++)
#define trav(a,v) for(auto a:v)
#define all(x) begin(x),end(x)
const lld INF=1e18;
lld In[6000][6005];
lld arr[6000];
ordered_set O;
lld DP[6000][6005];
void calc(int l, int r, int optl, int optr, int level){
    if(l>r)return;
    int mid=(l+r)/2;
    int best=-1;
    rep(i,optl,min(mid,optr+1)){
        if(DP[mid][level]>DP[i][level-1]+In[i][mid-1]){
            DP[mid][level]=DP[i][level-1]+In[i][mid-1];
            best=i;
        }
    }
    //~ cout<<mid<<" "<<level<<" "<<DP[mid][level]<<" "<<best<<endl;
    calc(l,mid-1,optl,best,level);
    calc(mid+1,r,best,optr,level);
}
void solve(){
	int n,k;
    cin>>n>>k;
    k++;
    rep(i,0,n)cin>>arr[i];
    rep(i,0,n){
        O.clear();
        lld inv=0;
        rep(j,i,n){
            inv+=O.size()-O.order_of_key(pair<int,int>(arr[j],j));
            O.insert(pair<int,int>(arr[j],j));
            In[i][j]=inv;
            //cout<<i<<" "<<j<<" "<<inv<<endl;
        }
    }
    
    rep(i,0,n+1){
        rep(j,0,k+1)DP[i][j]=INF;
    }
    DP[0][0]=0;
    rep(j,1,k+1)calc(j,n,j-1,n,j);
    //~ rep(i,0,k+1){
        //~ rep(j,0,n+1)cout<<DP[j][i]<<" ";
        //~ cout<<endl;
    //~ }
    cout<<DP[n][k]<<"\n";
    
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	int tt=1;
	cin>>tt;
	while(tt--){
		solve();
	}
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 5496kb

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: -100
Wrong Answer
time: 13ms
memory: 9716kb

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
1000000000000000000
0
0
0
0
1
1000000000000000000
3
0
0
1
0
0
1
0
0
1
4
0
0
0
0
0
0
0
0
2
0
2
0
1000000000000000000
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...

result:

wrong answer 30th lines differ - expected: '0', found: '1000000000000000000'