首页 > 其他分享 >2019 Yinchuan K

2019 Yinchuan K

时间:2022-12-16 17:56:27浏览次数:65  
标签:int 矩阵 2019 mp && Yinchuan now 1010

K. Largest Common Submatrix

题链
其实这类题就是非常典
因为他给出的是一个不重复的矩阵
那么我们B都会对应A有且仅有一个位置
我们抽象其B->A为一个特定的向量
题意就转化为求B中同向量的最大子矩阵
求最大子矩阵显然可以用悬线法
我们枚举每一行 然后悬线法即可
我们只需要思考转移
比如我们现在要从第i-1行转移到第i行
显然我们该位置上的对应A只要是上面一个位置对应A的下方一个就是可以继承的 否则就直接为1
左右扩展的也是如此

int a[1010][1010],b[1010][1010];
void solve(){
    vector<int>mp(N);
    int n,m;cin>>n>>m;
    int now=1;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
            mp[a[i][j]]=now;
            now++;
        }
    }
    for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>b[i][j];
    vector<int>l(N),r(N),A(N);
    int ans=0;
    for(int i=1;i<=n;i++){
        for (int j = 1; j <= m; j++){
            if(mp[b[i-1][j]]+m==mp[b[i][j]])A[j]++;
            else A[j]=1;
        }
        for (int j = 1; j <= m; j++) {
            l[j]=j;
            while (l[j] > 1 && mp[b[i][l[j] - 1]] - mp[b[i][j]] == l[j] - 1 - j && A[j] <= A[l[j] - 1])
                l[j] = l[l[j] - 1];
        }
        for (int j = m; j >= 1; j--) {
            r[j]=j;
            while (r[j] < m && mp[b[i][r[j] + 1]] - mp[b[i][j]] == r[j] + 1 - j && A[j] <= A[r[j] + 1])
                r[j] = r[r[j] + 1];
        }
        for (int j = 1; j <= m; j++)
            ans = max(ans, (r[j] - l[j] + 1) * A[j]);
    }
    cout<<ans<<endl;
}

标签:int,矩阵,2019,mp,&&,Yinchuan,now,1010
From: https://www.cnblogs.com/ycllz/p/16987996.html

相关文章

  • VS2019发布至远程IIS部署流程
    服务器部署传统的开发将项目发布至本地桌面之后,复制至站点目录或通过FTP上传站点目录,有点小麻烦,通过开发工具VS2019本身集成的功能,可以一步到发布到远程IIS站点。条件:V......
  • 【windows Server 2019系列】 构建IIS服务器
    个人名片:对人间的热爱与歌颂,可抵岁月冗长......
  • 南方科技大学2019年数学分析考研试题参考解答
    南方科技大学2019年数学分析考研试题参考解答......
  • 南方科技大学2019年高等代数考研试题参考解答
    南方科技大学2019年高等代数考研试题参考解答......
  • P5405 [CTS2019]氪金手游
    链接:https://www.luogu.com.cn/problem/CF1284E题解:由于这是一个内外向树,不好做,先将它转化为内向树。转化后其实可算出第\(i\)在\(i\)子树前被抽中的概率:令子树和为\(SZ......
  • [CmdOI2019]任务分配问题
    链接:https://www.luogu.com.cn/problem/P5574题目描述:将序列分为\(k\)段,最小化每一段的顺序对之和。题解:将序列分为\(k\)段,这样让我们想到\(dp\)。令\(dp_{i,j}\)表示划......
  • CSP2019游记
    Day0CSP模拟赛:t1就是模拟题t2是期望的线性性t3是状压dp,T3没调出来得分:100+100+0CSP-S-Day1一个小时做完了t1,t2看到t3,贪心的建个限制图可以做到n的4次方,莫名......
  • [IOI2019]排列鞋子
    $[IOI2019]$排列鞋子链接:https://www.luogu.com.cn/problem/P5749题目描述:将一个序列$A$交换到满足对于任意的$i(1<=i<=n/2)$满足$a_{i}=-a_{i\times2}$且$a_{i}<......
  • Windows 10下基于Visual Studio 2019安装配置MPI 10.1.2
    参考:https://blog.csdn.net/Jacamox/article/details/1125633611、下载并安装VisualStudioCommunity2019;2、下载并安装MPI10.1.2:http://www.mpich.org/downloads/......
  • 强网杯 2019 随便注
    题目链接https://buuoj.cn/challenges#[强网杯2019]随便注解题过程该题中,在使用unionselect查询显位符时,发现程序过滤了select:经过各种尝试都没法绕过,其实这题需......