zoukankan      html  css  js  c++  java
  • Codeforces Round #642 (Div. 3) F —Decreasing Heights dp

    #include <bits/stdc++.h>
    using namespace std;
    const int N=110;
    typedef long long ll;
    typedef pair<int,int> pii;
    #define int ll
    int T,n,m;
    int in[N][N],dp[N][N];
    set<int> st;
    signed main()
    {
    	cin>>T;
    	while(T--)
    	{
    		cin>>n>>m;
    		st.clear();
    		for(int i=0; i<n; i++)
    			for(int j=0; j<m; j++)
    				//因为只能往高度+1的,减去之后,也就变成只能往高度相同的走了
    				cin>>in[i][j],in[i][j]-=i+j,st.insert(in[i][j]);
    		ll ans=1e18;
    		//以这个点为起始高度,默认为0 
    		for(auto k:st)
    		{
    			for(int i=0; i<n; i++)
    				for(int j=0; j<m; j++)
    				{
    					//变成0需要的操作次数
    					int a=in[i][j]-k;
    					dp[i][j]=1e18;
    					//如果小于0,那么就说明高度是小于k的,那么这个点就不可能走到 
    					if(a<0)
    						continue;
    					//如果大于等于0,那么就是需要的次数 
    					if(i==0 && j==0)
    						dp[i][j]=a;
    					//状态转移 
    					if(i!=0)
    						dp[i][j]=min(dp[i][j],dp[i-1][j]+a);
    					if(j!=0)
    						dp[i][j]=min(dp[i][j],dp[i][j-1]+a);
    				}
    			ans=min(ans,dp[n-1][m-1]);
    		}
    		cout<<ans<<endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    linux时间同步
    阿里云自定义监控tomcat进程数
    Kafka监控
    阿里云ECS主机自定义进程监控
    kafka常用运维命令
    命令--cut
    Linux查看用户及分组
    Bind搭建DNS服务
    使用Bind搭建DNS服务
    DNS开源服务器BIND最小配置详解
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12902332.html
Copyright © 2011-2022 走看看