[USACO14MAR]懒惰的牛The Lazy Cow_Sliver
休闲题
一道大水题,直接枚举每个点作为驻扎地,然后利用前缀和求出答案,取max就好了,复杂度(O(N^3))(要不是标签是蓝色我2min内绝对能切掉,假的难度导致我思考的过于复杂,7min才想出来)
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const int maxn=406;
int mat[maxn][maxn],sum[maxn][maxn],n,kk;
int main()
{cin>>n>>kk;for (int i=1;i<=n;++i)for (int j=1;j<=n;++j){scanf("%d",&mat[i][j]);sum[i][j]=sum[i][j-1]+mat[i][j];} int ans=0;for (int i=1;i<=n;++i)for (int j=1;j<=n;++j){int tmp=sum[i][min(j+kk,n)]-sum[i][max(j-kk,1)-1];int cnt=kk;for (int k=1;k<=kk;++k){ if (i-k<1) break;cnt--;tmp+=sum[i-k][min(j+cnt,n)]-sum[i-k][max(j-cnt,1)-1];}cnt=kk;for (int k=1;k<=kk;++k){ if (i+k>n) break;cnt--;tmp+=sum[i+k][min(j+cnt,n)]-sum[i+k][max(j-cnt,1)-1];}ans=max(ans,tmp);}cout< 收获:
通过做水题,发现自己容易想麻烦,要暴力一点qwq
转载于:https://www.cnblogs.com/bullshit/p/9703442.html
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
