QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#788840#8519. Radarsswt2009TL 215ms113468kbC++144.5kb2024-11-27 18:29:172024-11-27 18:29:19

Judging History

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

  • [2024-11-27 18:29:19]
  • 评测
  • 测评结果:TL
  • 用时:215ms
  • 内存:113468kb
  • [2024-11-27 18:29:17]
  • 提交

answer

/*
	主播把赛时代码留着了。
	因为我觉得他没有错。
	四个角做一遍。
	我真的不知道为什么不对。
	虽然我赛时就不确定
*/
#include<bits/stdc++.h>
using namespace std;

// #define int long long
#define pii pair<int,int>
#define mkp make_pair
#define fi first 
#define se second
#define spa putchar(' ')
#define ero putchar('\n')

// const int inf=1e18;

inline int read(){
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
    return x*f;
}
inline void write(int x){
    if(!x)putchar('0');
    if(x<0){x=-x;putchar('-');}
    int a[300],cnt=0;
    while(x){a[++cnt]=x%10;x/=10;}
    while(cnt--){putchar(a[cnt+1]+'0');}
}

int n;
int a[5050][5050];
int b[5050][5050];
int ans;

void dfs(int x,int y,int sum,vector<int>vec){
	if(sum>=ans){
		return ;
	}
	if(y==4){
		dfs(x+1,1,sum,vec);
		return ;
	}
	if(x==4){
		if(*min_element(vec.begin(),vec.end())==1){
			ans=min(ans,sum);
		}
		return ;
	}
	dfs(x,y+1,sum,vec);
	vector<int>nxt=vec;
	if(x<=2&&y<=2) nxt[0]=1;
	if(x>=2&&y<=2) nxt[1]=1;
	if(x<=2&&y>=2) nxt[2]=1;
	if(x>=2&&y>=2) nxt[3]=1;
	dfs(x,y+1,sum+b[x][y],nxt);
}

void solve(){
    n=read();
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            a[i][j]=read();
        }
    }
    /*
	int ans=a[n/2+1][n/2+1];
    pii pos1={0,0};
    pii pos={0,0};
    int tmp=inf;
    for(int i=1;i<=n/2+1;i++){
        for(int j=1;j<=n/2+1;j++){
            if(tmp>a[i][j]||(tmp>=a[i][j]&&((i==n/2+1)||(j==n/2+1)))){
                tmp=a[i][j];
                pos1={i,j};
            }
        }
    }
    pii pos2={0,0};
    tmp=inf;
    for(int i=n/2+1;i<=n;i++){
        for(int j=1;j<=n/2+1;j++){
            if(tmp>a[i][j]||(tmp>=a[i][j]&&((i==n/2+1)||(j==n/2+1)))){
                tmp=a[i][j];
                pos2={i,j};
            }
        }
    }
    int ans1=0;
    if(pos1==pos2){
        ans1=a[pos1.fi][pos1.se];
    }
    else if(pos1.fi==n/2+1){
        ans1=a[pos1.fi][pos1.se];
    }
    else if(pos2.fi==n/2+1){
        ans1=a[pos2.fi][pos2.se];
    }
    else{
        ans1=a[pos1.fi][pos1.se]+a[pos2.fi][pos2.se];
    } 
    pii pos1r={0,0};
    tmp=inf;
    for(int i=1;i<=n/2+1;i++){
        for(int j=n/2+1;j<=n;j++){
            if(tmp>a[i][j]||(tmp>=a[i][j]&&((i==n/2+1)||(j==n/2+1)))){
                tmp=a[i][j];
                pos1r={i,j};
            }
        }
    }
    pii pos2r={0,0};
    tmp=inf;
    for(int i=n/2+1;i<=n;i++){
        for(int j=n/2+1;j<=n;j++){
            if(tmp>a[i][j]||(tmp>=a[i][j]&&((i==n/2+1)||(j==n/2+1)))){
                tmp=a[i][j];
                pos2r={i,j};
            }
        }
    }
    if(pos1r==pos2r){        
        if(pos2r==mkp(n/2+1,n/2+1)&&pos1==pos1r&&pos2==pos1);
        ans1+=a[pos1r.fi][pos1r.se];
    }
    else if(pos1r.fi==n/2+1){
        if(pos1r.se==n/2+1);
        ans1+=a[pos1r.fi][pos1r.se];
    }
    else if(pos2r.fi==n/2+1){
        if(pos2r.se==n/2+1);
        ans1+=a[pos2r.fi][pos2r.se];
    }
    else{
        ans1+=a[pos1r.fi][pos1r.se]+a[pos2r.fi][pos2r.se];
    }
    ans=min(ans,ans1);
    ans1=0;
    if(pos1==pos1r){
        ans1=a[pos1.fi][pos1.se];
    }
    else if(pos1.se==n/2+1){
        ans1=a[pos1.fi][pos1.se];
    }
    else if(pos1r.se==n/2+1){
        ans1=a[pos1r.fi][pos1r.se];
    }
    else{
        ans1=a[pos1.fi][pos1.se]+a[pos1r.fi][pos1r.se];
    } 
    if(pos2==pos2r){
        if(pos2r==mkp(n/2+1,n/2+1)&&pos1==pos1r&&pos2==pos1);
        ans1+=a[pos2.fi][pos2.se];
    }
    else if(pos2.se==n/2+1){
        if(pos2.se==n/2+1);
        ans1+=a[pos2.fi][pos2.se];
    }
    else if(pos2r.se==n/2+1){
        if(pos2r.se==n/2+1);
        ans1+=a[pos2r.fi][pos2r.se];
    }
    else{
        ans1+=a[pos2.fi][pos2.se]+a[pos2r.fi][pos2r.se];
    }
    ans=min(ans,ans1);
    write(ans);ero;
    return ;
	*/
	if(n==1){
		write(a[1][1]),ero;
		return;
	}
	ans=a[n/2+1][n/2+1];
	memset(b,0x3f,sizeof(b));
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			int x=0,y=0;
			if(i<n/2+1) x=1;
			if(i==n/2+1) x=2;
			if(i>n/2+1) x=3;
			if(j<n/2+1) y=1;
			if(j==n/2+1) y=2;
			if(j>n/2+1) y=3;
			b[x][y]=min(b[x][y],a[i][j]); 
		}
	}
	dfs(1,1,0,{0,0,0,0});
	write(ans);ero;
}

signed main(){
    // freopen("distorted.in","r",stdin);
    // freopen("distorted.out","w",stdout);
    int T=read();
    while(T--){solve();}
    return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 17ms
memory: 105260kb

input:

2
3
1 1 1
1 1 1
1 1 1
5
8 5 2 8 3
5 6 9 7 3
7 8 9 1 4
8 9 4 5 5
2 8 6 9 3

output:

1
5

result:

ok 2 number(s): "1 5"

Test #2:

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

input:

1
1
444739567

output:

444739567

result:

ok 1 number(s): "444739567"

Test #3:

score: 0
Accepted
time: 215ms
memory: 105072kb

input:

32
5
177252602 814271963 432801178 401470194 888319541
320323627 34071000 116035631 87392694 926990496
423510770 515133425 777623990 140441392 853473387
976288681 925949889 930584554 939702106 761328886
840677679 912446055 378955738 997133668 334407172
3
633852912 89450314 828384045
327867173 732812...

output:

494991369
661643843
47298040
226890388
50684672
954430705
139405747
530064327
199272913
211829225
333898451
217089022
35580250
251879512
230866303
60323753
215243437
114032585
351186098
361741480
49710371
75128942
269414925
755829169
133537759
108744675
691515792
193230413
469380143
156043031
227141...

result:

ok 32 numbers

Test #4:

score: 0
Accepted
time: 43ms
memory: 113468kb

input:

8
43
989947367 331735816 349317917 700365413 17189378 612200624 154937171 346672308 376889862 872720288 638190204 958149220 927650750 20485214 849210362 571686855 199779982 519793060 418047026 334316854 663198223 597430022 731510780 865566541 833977935 78042080 441551911 425178608 47859112 268111727...

output:

4223743
95074
47405673
99139301
77400585
170038233
140844122
53719

result:

ok 8 numbers

Test #5:

score: 0
Accepted
time: 34ms
memory: 5512kb

input:

500000
1
965486862
1
216509339
1
482967094
1
753780237
1
701167068
1
946858197
1
92693705
1
41962139
1
260677329
1
616111269
1
487286424
1
717653655
1
871004981
1
393162462
1
100430388
1
740632872
1
835913896
1
610746520
1
298859058
1
950834347
1
314912345
1
869919263
1
12617927
1
759608365
1
686606...

output:

965486862
216509339
482967094
753780237
701167068
946858197
92693705
41962139
260677329
616111269
487286424
717653655
871004981
393162462
100430388
740632872
835913896
610746520
298859058
950834347
314912345
869919263
12617927
759608365
686606085
694042166
703198383
514097106
492535170
681684788
239...

result:

ok 500000 numbers

Test #6:

score: -100
Time Limit Exceeded

input:

55560
3
493633806 683976517 397047281
10227143 558843035 584286153
220557051 96550579 356192384
3
133291149 782667966 675946232
698472590 618998483 737004700
539126624 205091987 827255113
3
334646943 95863066 247302090
388453188 753491791 459811227
215101157 511216316 59214807
3
965812864 732816430 ...

output:


result: