到底是为什么?
查看原帖
到底是为什么?
1336385
NoSignal_CN楼主2024/5/24 16:21

Wrong Answer on:

15
4 4 4 3 2 1 5 3 5 3 4 1 2 4 4
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,t[40],mp[400][400],dx[9]={0,-1,0,1,0,-1,-1,1,1},dy[9]={0,0,1,0,-1,-1,1,1,-1},ans,v[400][400][9];
void dfs(int cnt,int x,int y,int z){
    if(cnt>n) return;
    int c[2];
    if(z==1) c[0]=5,c[1]=6;
    else if(z==2) c[0]=6,c[1]=7;
    else if(z==3) c[0]=7,c[1]=8;
    else if(z==4) c[0]=5,c[1]=8;
    else if(z==5) c[0]=1,c[1]=4;
    else if(z==6) c[0]=1,c[1]=2;
    else if(z==7) c[0]=2,c[1]=3;
    else if(z==8) c[0]=3,c[1]=4;
    for(int i=0;i<2;i++){
        for(int j=1;j<=t[cnt];j++){
            mp[x+j*dx[c[i]]][y+j*dy[c[i]]]=1;
        }
        if(v[x+t[cnt]*dx[c[i]]][y+t[cnt]*dy[c[i]]][c[i]]<n-cnt){
            v[x+t[cnt]*dx[c[i]]][y+t[cnt]*dy[c[i]]][c[i]]=n-cnt;
            dfs(cnt+1,x+t[cnt]*dx[c[i]],y+t[cnt]*dy[c[i]],c[i]);
        }
    }
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    #ifndef ONLINE_JUDGE
        freopen("input.txt","r",stdin);
        freopen("output.txt","w",stdout);
    #endif
    cin >> n;
    for(int i=1;i<=n;i++){
        cin >> t[i];
    }
    for(int i=180+t[1]-1;i>=180;i--){
        mp[i][180]=1;
    }
    mp[180][180]=1;
    v[180][180][1]=n-1;
    dfs(2,180,180,1);
    for(int i=0;i<400;i++){
        for(int j=0;j<400;j++){
            if(mp[i][j]){
                ans++;
            }
            //cout << mp[i][j];
        }
        //cout << endl;
    }
    cout << ans << endl;
    return 0;
}

2024/5/24 16:21
加载中...