警钟:if you WA on#11#12

P2704 [NOI2001] 炮兵阵地

Autumn_0930 @ 2024-08-01 16:59:01

检查一下输入1 1 p的情况

应该输出1

如果你的输出是0,OK可以加特判

如果是1,那就是我太菜其它问题了

(因为在初始化的过程中,第一行的f[1][i][0]默认将第0行的二进制状态设为0,但最后找答案的时候是从状态1开始的)

把找答案的循环

int ans=0;
    for(int i=1;i<=cnt;i++){
        for(int j=1;j<=cnt;j++) ans=max(ans,f[n][i][j]);
    } 
    cout<<ans;

改成:

int ans=0;
    if(n!=1){
        for(int i=1;i<=cnt;i++){
            for(int j=1;j<=cnt;j++) ans=max(ans,f[n][i][j]);
        } 
    }else{
        for(int i=1;i<=cnt;i++) ans=max(ans,f[n][i][0]);
    }
    cout<<ans;

即可


by Autumn_0930 @ 2024-08-01 17:00:02

“输入1 1 P”打错了抱一丝


|