QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#882788#9879. ReTravelzhulexuanWA 0ms11616kbC++142.8kb2025-02-05 11:17:542025-02-05 11:17:54

Judging History

This is the latest submission verdict.

  • [2025-02-05 11:17:54]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 11616kb
  • [2025-02-05 11:17:54]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf INT_MAX
#define fr(i,l,r) for (i=(l); i<=(r); i++)
#define rfr(i,l,r) for (i=(l); i>=(r); i--)
template<typename T>inline void read(T &n){
    T w=1; n=0; char ch=getchar();
    while (!isdigit(ch) && ch!=EOF){ if (ch=='-') w=-1; ch=getchar(); }
    while (isdigit(ch) && ch!=EOF){ n=(n<<3)+(n<<1)+(ch&15); ch=getchar(); }
    n*=w;
}
template<typename T>inline void write(T x){
    if (x==0){ putchar('0'); return ; }
    T tmp;
    if (x>0) tmp=x;
    else tmp=-x;
    if (x<0) putchar('-');
    char F[105];
    long long cnt=0;
    while (tmp){
        F[++cnt]=tmp%10+48;
        tmp/=10;
    }
    while (cnt) putchar(F[cnt--]);
}
#define Min(x,y) x = min(x,y)
#define Max(x,y) x = max(x,y)
//基础配置=================================================================================
const ll N = 505;
ll n,m;
ll a[N][N], b[N][N];
ll f[N][N], g[N][N];
ll calc(ll l,ll r,ll k){
    ll x = a[l][k], y = b[l][k], xx = a[k+1][r], yy = b[k+1][r];
    ll ans = max(x,xx) - min(x,xx) + max(y,yy) - min(y,yy);
    // printf("( %lld , %lld ) , ( %lld , %lld ) \n",x,y,xx,yy);
    // printf("calc %lld %lld %lld = %lld\n",l,r,k,ans);
    return ans;
}
int main(){
	// freopen("a.in","r",stdin);
//	freopen(".out","w",stdout);
    ll i,j,k;
    read(n);
    memset(a,0x0f,sizeof(a)), memset(b,0x0f,sizeof(b));
    a[0][0] = b[0][0] = 0;
    fr(i,1,n) read(a[i][i]), read(b[i][i]);
    rfr(i,n,0)
        fr(j,i+1,n){
            a[i][j] = min(a[i][i],a[i+1][j]);
            b[i][j] = min(b[i][i],b[i+1][j]);
        }
    memset(f,0x0f,sizeof(f));
    memset(g,0x0f,sizeof(g));
    rfr(i,n,0){
        // printf("\n\n\ni = %lld\n",i);
        ll r = i;
        fr(j,i+1,n){
            if (a[j][j]>=a[i][i] && b[j][j]>=b[i][i]) r = j;
            else break;
        }
        // printf("r = %lld\n",r);
        f[i][i] = 0;
        fr(j,i+1,r){
            f[i][j] = g[i+1][j] + calc(i,j,i);
            // printf("\n j = %lld\n",j);
            // fr(k,i,j-1){
                // Min( f[i][j] , f[i][k] + g[k+1][j] + calc(i,j,k) );
                // printf("%lld ~ %lld , %lld : %lld + %lld + %lld\n",i,j,k,f[i][k] , g[k+1][j] , calc(i,j,k));
            // }
            // printf("f[%lld][%lld] = %lld\n",i,j,f[i][j]);
        }
        // printf("\n");
        fr(j,i,n){
            g[i][j] = f[i][j];
            fr(k,i,min(r,j-1))
                Min( g[i][j] , f[i][k] + g[k+1][j] + calc(i,j,k) );
            // printf("g[%lld][%lld] = %lld\n",i,j,g[i][j]);
        }
        // fr(j,i,r) printf("f[%lld][%lld] = %lld\n",i,j,f[i][j]);
    }
    ll ans = f[0][n]; write(ans);
    return 0;
}
//g++ a.cpp -o a -Wall -Wl,--stack=512000000 -std=c++11 -O2

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 11612kb

input:

2
3 3
1 2

output:

6

result:

ok "6"

Test #2:

score: 0
Accepted
time: 0ms
memory: 11616kb

input:

3
2 2
3 3
1 3

output:

7

result:

ok "7"

Test #3:

score: -100
Wrong Answer
time: 0ms
memory: 11460kb

input:

500
906691059 413653999
813847339 955892128
451585301 43469773
278009742 548977048
521760889 434794718
985946604 841597326
891047768 325679554
511742081 384452587
626401695 957413342
975078788 234551094
541903389 149544006
302621084 150050891
811538590 101823753
663968655 858351976
268979133 9768326...

output:

347879249672

result:

wrong answer 1st words differ - expected: '202616034783', found: '347879249672'