zoukankan      html  css  js  c++  java
  • 矩阵 matrix

     矩阵 matrix

    题目描述

    给定一个n∗m的矩阵,矩阵中的每个元素aijaij为正整数。
    接下来规定:
    1.合法的路径初始从矩阵左上角出发,每次只能向右或向下走,终点为右下角。
    2.路径经过的n+m−1个格子中的元素为A1,A2…A(n+m−1),Aavg为Ai的平均数,路径的V值为:
    (n+m−1)n+m−1∑i=1(Ai−Aavg)2
    求V值最小的合法路径。输出V值即可,有多组测试数据。

    输入

     

    第一行包含一个正整数T,表示数据组数。

    对于每组数据:

    第一行包含两个正整数n和m,表示矩阵的行数和列数。
    接下来n行,每行m个正整数(a_{ij}),描述这个矩阵。

     

    输出

     

    对于每次询问,输出一行一个整数表示要求的结果

     

    样例输入

    1
    2 2
    1 2
    3 4

    样例输出

    14
    

    提示

    对于24%的数据 n≤10,m≤10
    对于80% T≤5,n≤30,m≤30 矩阵中的元素不大于30
    对于另外20%T≤2,n≤50,m≤50


    solution

    拆开式子

    N=n+m-1,S=sum ai,SS=sum ai^2

    则原式=N*SS-S*S

    考虑dp

    令f[i][j][k]表示走到(i,j),走过S*S=k的SS的最小值

    f[i][j][k]=min(f[i-1][j][k-s[i][j]],f[i][j-1][k-s[i][j]])+s[i][j]*s[i][j];

    枚举计算答案即可

    #include<cstdio>
    #include<iostream>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    int T,n,m,s[55][55];
    long long f[55][55][3505];
    int main(){
    	cin>>T;
    	while(T--){
    		cin>>n>>m;
    		for(int i=1;i<=n;i++)
    		for(int j=1;j<=m;j++)scanf("%d",&s[i][j]);
    		
    		for(int i=0;i<=n;i++)
    		for(int j=0;j<=m;j++)
    		for(int k=0;k<=3500;k++)f[i][j][k]=1e15;
    		f[1][1][s[1][1]]=s[1][1]*s[1][1];
    		for(int i=1;i<=n;i++)
    		for(int j=1;j<=m;j++){
    			if(i==1&&j==1)continue;
    			for(int k=s[i][j];k<=3500;k++){
    			f[i][j][k]=min(f[i-1][j][k-s[i][j]],f[i][j-1][k-s[i][j]])+1LL*s[i][j]*s[i][j];
    			}
    		}
    		long long ans=1e15;
    		for(int i=0;i<=3500;i++){
    			ans=min(ans,(n+m-1)*f[n][m][i]-1LL*i*i);
    		}
    		printf("%lld
    ",ans);
    	}
        return 0;
    }
    
  • 相关阅读:
    洛谷P3122 [USACO15FEB]圈住牛Fencing the Herd(计算几何+CDQ分治)
    洛谷P4502 [ZJOI2018]保镖(计算几何+三维凸包)
    [Codeforces1137D]Cooperative Game
    洛谷P2287 [HNOI2004]最佳包裹(三维凸包)
    洛谷P4724 【模板】三维凸包
    洛谷P4526 【模板】自适应辛普森法2(Simpson法)
    A + B Problem
    Java中方法next()和nextLine()的区别
    发现环
    分考场
  • 原文地址:https://www.cnblogs.com/liankewei/p/10358836.html
Copyright © 2011-2022 走看看