QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#788840 | #8519. Radars | swt2009 | TL | 215ms | 113468kb | C++14 | 4.5kb | 2024-11-27 18:29:17 | 2024-11-27 18:29:19 |
Judging History
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;
}
Details
Tip: Click on the bar to expand more detailed information
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 ...