zoukankan      html  css  js  c++  java
  • NOIP真题:矩阵取数问题

    憨题,除了要写高精度,分行考虑,直接区间dp

    60pts:

    #include<iostream>
    #include<cstdio>
    #include<queue>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<set>
    #include<map>
    using namespace std;
    #define maxn 106
    #define int long long 
    #define lson t[s].lc
    #define rson t[s].rc
    #define rep(i,a,b) for (int i=(a);i<=(b);++i)
    #define dep(i,a,b) for (int i=(a);i>=(b);i--)
    #define erep(i,a) for (int i=head[(a)];i!=-1;i=e[i].next)
    int val[maxn][maxn],dp[maxn][maxn][maxn],n,m;
    inline int dfs(int pan,int now,int l,int r)
    {
    	if (l==r) 
    	{
    		int tmp=(1<<now);
    		int cur=val[pan][l]*tmp;
    		return cur;
    	}
    	if (~dp[now][l][r]) return dp[now][l][r];
    	int tmp=0;
    	int lmx=(1<<now);
    	int rmx=lmx;
    	lmx*=val[pan][l],rmx*=val[pan][r];
    	tmp=max(lmx+dfs(pan,now+1,l+1,r),rmx+dfs(pan,now+1,l,r-1));
    	return dp[now][l][r]=tmp;
    }
    signed main()
    {	
    	cin>>n>>m;
    	rep(i,1,n) rep(j,1,m) scanf("%lld",&val[i][j]);
    	int ans=0;
    	rep(i,1,n)
    	{
    		memset(dp,-1,sizeof(dp));
    		ans+=dfs(i,1,1,m);
    	}
    	cout<<ans;
    }
    
  • 相关阅读:
    ihaiLjEUSx
    表达式的逆波兰式转化模板
    运算表达式求值模板
    程序员花式拜年脚本
    vbs脚本实现自动打字祝福&搞笑
    MFC实现红黑砖块
    vbs脚本实现qq定时发消息(初级)
    打包java程序生成exe
    webpack配置
    vue路由
  • 原文地址:https://www.cnblogs.com/bullshit/p/9930131.html
Copyright © 2011-2022 走看看