20分求调

P2356 弹珠游戏

@[panrong](/user/1044970) 22行开始的for循环内的e改成i
by Shirley_ninefish @ 2023-12-10 17:29:53


@[Shirley_ninefish](/user/796071) 还是不对嘤嘤嘤
by panrong @ 2023-12-12 17:19:11


@[panrong](/user/1044970) c和d数组开小了,总共有n*n个点,你只开n+1肯定不够啊 ```cpp #include <bits/stdc++.h> using namespace std; int main(){ int n,b=0,e=0,s=0; cin>>n; int a[n+1][n+1],c[n*n+1],d[n*n+1]; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cin>>a[i][j]; if(a[i][j]==0){ b=1; e+=1; c[e]=i; d[e]=j; } } } if(b==0){ cout<<"Bad Game!"; return 0; } for(int i=1;i<=e;i++){ int f=0; for(int j=c[i]+1;j<=n;j++){ if(a[j][d[i]]!=0){ f+=a[j][d[i]]; } } for(int j=c[i]-1;j>0;j--){ if(a[j][d[i]]!=0){ f+=a[j][d[i]]; } } for(int j=d[i]+1;j<=n;j++){ if(a[c[i]][j]!=0){ f+=a[c[i]][j]; } } for(int j=d[i]-1;j>0;j--){ if(a[c[i]][j]!=0){ f+=a[c[i]][j]; } } if(f>s){ s=f; } } cout<<s; return 0; } ```
by Shirley_ninefish @ 2023-12-12 19:58:38


这个题直接用前缀和做就可以,不用那么复杂
by qusia_MC @ 2023-12-22 07:46:35


你这个时间复杂度为O(容身之地的个数*n), 假如n的范围再大一点你就不行了
by qusia_MC @ 2023-12-22 07:48:32


|