QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#694501 | #7075. Let's Play Jigsaw Puzzles! | ucup-team4352# | WA | 2709ms | 449872kb | C++23 | 1.8kb | 2024-10-31 18:05:27 | 2024-10-31 18:05:27 |
Judging History
answer
#include<bits/stdc++.h>
#define ll long long
#define pii pair<int,int>
#define lowbit(x) (x&-x)
#define log(x) (31^__builtin_clz(x))
using namespace std;
const int maxn=1e4+5;
int a[maxn];
vector<int>dp[maxn];
vector<int>ans[maxn];
vector<short>loc[maxn];
int n;
int now[maxn];
short find(int x,int y,int nx,int ny){
short l=y+1,r=n+1;
while(l<r){
short mid=l+r-1>>1;
if(ans[x+1][mid-(x+1)]+nx>ans[y+1][mid-(y+1)]+ny)l=mid+1;
else r=mid;
}
return l;
}
void solve(){
n=9e3;
// cin>>n;
for(int i=1;i<=n;i++){
a[i]=i;
// cin>>a[i];
dp[i].resize(i+1);
}
for(int i=1;i<=n;i++){
int mn=a[i],mx=a[i];
for(int j=i;j<=n;j++){
mx=max(mx,a[j]);
mn=min(mn,a[j]);
ans[i].push_back(mx-mn);
}
}
dp[0]={0};
for(int i=1;i<=n;i++){
dp[i][1]=ans[1][i-1];
dp[i][i]=0;
loc[i]={(short)i};
for(int j=2;j<i;j++){
while(now[j-1]+1<loc[j-1].size()&&find(loc[j-1][now[j-1]],loc[j-1][now[j-1]+1],dp[loc[j-1][now[j-1]]][j-1],dp[loc[j-1][now[j-1]+1]][j-1])<=i)now[j-1]++;
dp[i][j]=dp[loc[j-1][now[j-1]]][j-1]+ans[loc[j-1][now[j-1]]+1][i-(loc[j-1][now[j-1]]+1)];
// cout<<loc[j-1][now[j-1]]<<" "<<loc[j-1].size()<<"\n";
}
// cout<<"\n";
if(i<n)
for(int j=1;j<i;j++){
while(loc[j].size()>1){
int tmp=loc[j].back(),tmp1=loc[j][loc[j].size()-2];
int nw=find(tmp,i,dp[tmp][j],dp[i][j]);
int lst=find(tmp,tmp1,dp[tmp][j],dp[tmp1][j]);
// if(0){
if(nw<=lst){
loc[j].pop_back();
}
else{
break;
}
}
loc[j].push_back(i);
}
// for(int j=1;j<=i;j++)cout<<dp[i][j]<<" ";cout<<"\n\n";
}
for(int j=1;j<=n;j++)cout<<dp[n][j]<<"\n";
}
int main(){
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int t=1;
// cin>>t;
while(t--)solve();
return 0;
}
/*
*/
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 2709ms
memory: 449872kb
input:
2 -1 3 -1 2 -1 4 1 -1 1 -1 -1 4 2 -1 3 -1
output:
8999 8998 8997 8996 8995 8994 8993 8992 8991 8990 8989 8988 8987 8986 8985 8984 8983 8982 8981 8980 8979 8978 8977 8976 8975 8974 8973 8972 8971 8970 8969 8968 8967 8966 8965 8964 8963 8962 8961 8960 8959 8958 8957 8956 8955 8954 8953 8952 8951 8950 8949 8948 8947 8946 8945 8944 8943 8942 8941 8940 ...
result:
wrong answer 1st lines differ - expected: '1 2', found: '8999'