矩阵取数游戏

矩阵取数游戏

https://ac.nowcoder.com/acm/problem/16645

不能直接1<<j,左移会溢出。所以需要数组记录或者直接快速幂;
想法比较直接,dp[j][k][2]取第j次时,到目前一共取了k次左边的,当前1为取左,0为取右;
正如紫书上说的,变量有几个,设几维;(比较粗暴的方法)

#include<bits/stdc++.h>
using namespace std;
__int128 mp[350][350],n,m,dp[350][350][2],ans;
inline __int128 read(){//快读
    __int128 x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=x*10+ch-'0';
        ch=getchar();
    }
    return x*f;
}
inline void print(__int128 x){//__int128输出
    if(x<0){
        putchar('-');
        x=-x;
    }
    if(x>9)
        print(x/10);
    putchar(x%10+'0');
}
__int128 power(__int128 a,__int128 b)//快速幂
{
    __int128 res=1;
    while(b)
    {
        if(b&1) res*=a;
        a*=a;
        b>>=1;
    }
    return res;
}
signed main()
{
    n=read(),m=read();
    for(__int128 i=1;i<=n;i++)
    {
        for(__int128 j=1;j<=m;j++)
        {
            mp[i][j]=read();
        }
    }
    for(__int128 i=1;i<=n;i++)//第i行
    {
        for(__int128 j=1;j<=m;j++)//次数
        {
            for(__int128 k=0;k<=j;k++)//取了k个左端点
            {
                __int128 h=power(2,j);
                if(k>0) dp[j][k][1]=max(dp[j][k][1],max(dp[j-1][k-1][0],dp[j-1][k-1][1])+h*mp[i][k]);
                dp[j][k][0]=max(dp[j][k][0],max(dp[j-1][k][0],dp[j-1][k][1])+h*mp[i][m-j+k+1]);
            }
        }
        __int128 ma1=0;
        for(__int128 k=0;k<=m;k++)
            ma1=max(ma1,max(dp[m][k][1],dp[m][k][0]));
        ans+=ma1;
        memset(dp,0,sizeof(dp));
    }
    print(ans);
}
全部评论

相关推荐

03-21 10:53
复旦大学 Java
大家好,我是@程序员花海,眼下&nbsp;26&nbsp;届春招、27&nbsp;届暑期实习全面开启,后端卷到没边,AI&nbsp;Agent的岗位占主导,很多牛友在我的评论区留言,想让我出一份Agent学习路线。我特意去看了下,打开淘天的招聘页面,以校招为例,一眼望去全是AI相关的岗位,只能说之后绝大多数岗位都会快速推进AI的落地和实践。之前写过&nbsp;Java&nbsp;后端&nbsp;3&nbsp;个月抢救路线https://www.nowcoder.com/discuss/824693499982315520?sourceSSR=users,也收到了牛友们的强烈好评,这次专门给后端转&nbsp;Agent做一套最少必要知识路线——&nbsp;不堆概念、不啃论文,只学面试必问、项目...
在职牛马didi:这篇路线整理得很系统,把后端知识映射到Agent体系这个思路特别实用。我自己也是从Java转做AI的,感触很深:工程底子扎实的人转Agent确实有优势,RAG和工具编排这些核心能力本质上都是后端逻辑的延伸。我们团队在做天猫的AI应用落地,方向跟你这篇路线里的企业级RAG和Agent系统很接近。暑期实习还在招AI应用研发工程师,JD可以参考看看跟你背景是否匹配:https://www.nowcoder.com/jobs/detail/440929?jobId=440929
软件开发投递记录
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务