10pts求助!

B4005 [GESP202406 四级] 黑白方块

Derek123wzy @ 2024-07-20 07:54:21

为啥别人O(n^6)满分, 而我O(n^6)10分?

代码如下:

#include<bits/stdc++.h>
#define int unsigned long long
using namespace std;
int n,m,ans,w[15][15];
bool check(int xa,int ya,int xb,int yb){
    int a[2]={};
    for(int i=xa;i<=xb;i++)
        for(int j=ya;j<=yb;j++)
            a[w[i][j]]++;
    return a[0]==a[1];
}
signed main(){
    ios::sync_with_stdio(0);
    cin>>n>>m;
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)cin>>w[i][j];
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            for(int k=i;k<m;k++)
                for(int l=j;l<m;l++)
                    if(check(i,j,k,l))
                        ans=max(ans,(k-i+1)*(l-j+1));
    cout<<ans<<'\n';
    return 0;
}

by xin20110426 @ 2024-07-20 08:13:18

@Derek123wzy 大哥,读入的数字之间没有空格,然后你还用cin


by xin20110426 @ 2024-07-20 08:14:36

你这样例都过不了,不检查一下就直接交了?


by xin20110426 @ 2024-07-20 08:19:57

而且你主函数的循环范围都是错误的 把题解好好理解一下 前两层枚举的是矩形的左上角,后两层枚举的是矩形的右下角 你这个枚举的范围要改一下 @Derek123wzy


by xin20110426 @ 2024-07-20 08:27:36

最后,虽然这道题不要紧,但是真的,不要老是define int unsigned long long。之前我NOIP就犯过这个问题。万一题目涉及负数运算,你就直接爆零了。然后开了一堆大数组,结果unsigned long long成功让你MLE,又爆零。


by xin20110426 @ 2024-07-20 08:28:12

附改正确的AC代码:

#include<bits/stdc++.h>
using namespace std;
int n,m,ans,w[15][15];
bool check(int xa,int ya,int xb,int yb){
    int a[2]={};
    for(int i=xa;i<=xb;i++)
        for(int j=ya;j<=yb;j++)
            a[w[i][j]]++;
    return a[0]==a[1];
}
signed main(){
    ios::sync_with_stdio(0);
    cin>>n>>m;
    for(int i=0;i<n;i++) {
        string s; cin >> s; //整行按字符串读入 
        for(int j=0;j<m;j++) {
            w[i][j] = s[j] - '0'; //转int 
        }
    }
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            for(int k=i;k<n;k++)
                for(int l=j;l<m;l++)
                    if(check(i,j,k,l))
                        ans=max(ans,(k-i+1)*(l-j+1));
    cout<<ans;
    return 0;
}

@Derek123wzy


by xin20110426 @ 2024-07-20 08:30:26

同样的时间复杂度,如果你没过,别人过了,大多数情况是自己的代码打错了。因为你的代码只有RE和WA


by xin20110426 @ 2024-07-20 08:36:04

关注谢谢


by Derek123wzy @ 2024-07-23 09:25:16

谢谢已关


by sunruiqi @ 2024-07-27 13:35:00

@xin20110426 谢谢!我本来也只有40分,参考了一下你的,我过了!


|