为什么我的暴力20pts呢?别人的都40
查看原帖
为什么我的暴力20pts呢?别人的都40
610144
JasonWhite楼主2024/8/5 19:07
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
int N,M,K,T;
int val[4001][4001],dp[4001][4001];
// int max(int a,int b){
//     return (b&((a-b)>>31))|(a&(~(a-b)>>31));
// }
// int min(int a,int b){
//     return (a&((a-b)>>31))|(b&(~(a-b)>>31));
// }
int main(){
    scanf("%d%d%d%d",&N,&M,&K,&T);
    for(int i=1;i<=K;i++){
        int x,y,v;
        scanf("%d%d%d",&x,&y,&v);
        val[x][y]=v;
    }
    for(int i=1;i<=N;i++){
        for(int j=1;j<=M;j++){
            for(int k=max(1,j-T);k<=min(N,j+T);k++){
                dp[i][j]=max(dp[i][j],dp[i-1][k]+val[i][j]);
            }
        }
    }
    int ans=0;
    for(int i=1;i<=M;i++){
        ans=max(ans,dp[N][i]);
    }
    printf("%d",ans);
    return 0;
}

无论是手写的max还是cmath的max都20pts

2024/8/5 19:07
加载中...