poj 1692 Crossed Matchings DP

利用Arcgis提取nc数据并计算区域年均温 1.下载数据。2.解压数据至不含中文的路径中。打开工具箱中的多维分析工具-创建NetCDF栅格图层,导入数据。3.打开工具箱中的数据管理工具-图层和表视图-创建栅格图层,导入数据,对输出数据进行命名,得到月均温栅格数据。4.选择工具箱-Spatial Analyst工具(空间分析工具)-地图代数-栅格计算器,计算全国一年年均温。​5.将其导出为.tif格式数据,方便后期使用。6.选择工具箱-Spatial Analyst工具(空间分析工具)-区域分析--以表格显示分区统计,得到分区域的气温数据。 阅读详情

http://poj.org/problem?id=1692

题意:给两串数字,让你在两串数字之间连线,连线的要求是,必须是相等的两个数字之间才能连线,每个数字最多只能连一条线,也可以不连,每条线必须 有且只有一条其他的线与他相交,而且相交的两条线连的数字不能使一样的,问最多能连几条线。

思路:用dp[i][j]来表示第一串数字的前i个和第二串数字的前j个数字间能连的最多的线的条数,开始时dp[i][j]=max(dp[i-1][j],dp[i][j-1]),然后我们在第一串数字的前i个中找与第二串中的第j个数字相同的数字,如果有多个,根据谈心的思想,可是知道我们应该取最后一个,假设是第x个数,相同的,再在第二个数字串的前j个数字中找和第一串的第i个数字相同的数字,取最后一个,假设是第y个数,那么可以在i和y,j和x之间连线,则dp[i][j]=max(dp[i][j],dp[x-1][y-1]+2)。最后的dp[n][m]就是答案。

这题的一个优化就是我们把每个串中的前i个数字中,最后一个x出现的位置记录下来,以后就可以直接找到,不用每次都查找,这样算法的复杂度就变成了n^2了。具体的细节看代码好了。


#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;

int a[110],b[110];
int last1[110][110],last2[110][110];
int dp[110][110];

int main()
{
    int cas;
    cin>>cas;
    while(cas--){
        memset(dp,0,sizeof(dp));
        memset(last1,0,sizeof(last1));
        memset(last2,0,sizeof(last2));

        int n,m;
        cin>>n>>m;
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        for(int i=1;i<=m;i++)
            scanf("%d",&b[i]);

        for(int i=1;i<=n;i++)
            for(int j=0;j<=100;j++){
                if(a[i]==j)
                    last1[i][j]=i;
                else last1[i][j]=last1[i-1][j];
            }
        for(int i=1;i<=m;i++)
            for(int j=0;j<=100;j++){
                if(b[i]==j)
                    last2[i][j]=i;
                else last2[i][j]=last2[i-1][j];
            }

        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
                if(a[i]==b[j]) continue;
                int tem1=last1[i][b[j]],tem2=last2[j][a[i]];
                if(tem1!=0&&tem2!=0)
                    dp[i][j]=max(dp[i][j],dp[tem1-1][tem2-1]+2);
            }
        }

        cout<<dp[n][m]<<endl;
    }
    return 0;
}


第42篇FEDGLOSS算法BEYOND LOCAL SHARPNESS:COMMUNICATION-EFFICIENT GLOBALSHARPNESS-AWARE MINIMIZATIONFOR :用上一轮伪梯度最小化锐度,获取与全局损失最相关的几何信息,引导全局优化趋向更平坦的最小值。效果对比分析:FEDGLOss。 阅读详情

相关推荐

Dify DSL文件分享 Dify讨论群 大模型token资源等(持续收集更新)

基于LLMOps平台-Dify的一站式学习平台。包含不限于:Dify案例、DSL文件分享、模型接入、Dify交流讨论等各类资源分享。

同名公众号:dify实验室 3716

poj 1692

传送门:http://poj.org/problem?id=1692 题意:给你两行数,问你最大匹配数是多少. 限制条件:1.数字相同 2.匹配之间只能交叉一次,且数字不同. 思路:dp f[i][j]表示用a用前i个数,b用前j个数的值 (待填坑) 代码:#include <cstdio> #include <cmath> #include <iostream> #include <

chen20000804的博客 678

Label Studio保姆级教程:从零搭建医疗影像标注平台(DICOM格式支持)

本文提供基于Label Studio从零搭建医疗影像标注平台的保姆级教程。针对DICOM格式支持,详细阐述了环境部署、DICOM深度集成与预处理、团队协作权限管理以及质量审核闭环等核心环节,旨在构建一个高效、可落地的医疗AI数据标注解决方案,助力模型落地。

nft7creator的博客 304

POJ1692 Crossed Matchings DP

POJ1692 Crossed Matchings DPDescription给出两列数,要求对上下相同的数进行连线,要求 1.一个数最多连一条线。 2.一条线必须且仅与一条线相交。 求最多可以连出几条线。题解这一题可以用LIS的思想来建立状态转移方程。 令f[i][j]表示第一行到i个数,第二行到j个数的答案。 f[i][j]=max(f[i][j−1],f[i−1][j])f[i][j

YJSheep 747

Python爬虫实战:用Selenium+ChromeDriver批量抓取政府网站政策文件(附完整代码)

本文详细介绍了使用Python的Selenium和ChromeDriver进行政府网站政策文件批量抓取的实战技巧。从环境配置、动态页面元素定位到分页机制破解和反爬虫策略,提供了完整的解决方案和代码示例,帮助开发者高效获取结构化政策数据。

weixin_42531710的博客 265

NLM去噪算法:原理、优化与医学图像处理实战

本文深入解析NLM去噪算法的核心原理及其在医学图像处理中的优化应用。通过全局自相似性计算,NLM算法有效抑制噪声并保留细节,特别适用于超声图像斑点噪声处理。文章还介绍了积分图像和傅里叶变换等优化技巧,显著提升计算效率,并分享医学影像项目中的实用调参经验。

weixin_29051149的博客 348

POJ 1692 Crossed Matchings【DP】

Description There are two rows of positive integer numbers. We can draw one line segment between any two equal numbers, with values r, if one of them is located in the first row and the other on...

dianxuanzhi1019的博客 141

C++ 类

本文介绍了C++中类的核心概念和使用方法。

weixin_54859557的博客 1016

POJ 1692 Crossed Matchings G++ dp 背

#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; //英语 看博友分析 抄博友程序 dp 背 int dp[105][105]; int a[105]; int b[105]; int main() { int T; scanf("%d",&T); whi...

woniupengpeng的专栏 147

OpenOCD入门到精通:第 1 章 OpenOCD 概述

OpenOCD是一款开源的片上调试工具,支持60+调试适配器和8大处理器架构。它提供三大核心功能:片上调试、在系统编程和边界扫描测试。作为嵌入式开发工具链的中间桥梁,OpenOCD连接上层IDE/GDB与底层硬件,采用分层架构设计实现硬件兼容性。其配置基于Tcl脚本语言,支持网络服务接口,广泛应用于ARM、RISC-V等芯片的调试与烧录场景。

从事嵌入式linux android驱动开发,拥有全栈能力 1401

大模型工作流Dify面试题及参考答案

设计一个基于 Dify 的智能摘要与重点提取 Agent,需结合Prompt 工程、模型能力配置和工作流优化,确保对长文本的高效解析和关键信息提炼。1. 明确任务需求与输入输出输入:长文本内容(如文章、报告、会议记录)或文本 URL输出摘要:简洁概括原文核心内容,控制在原文长度的 10%-20%重点列表:分点列出关键数据、结论、行动项等可选:关键词提取、情感倾向分析示例场景输入:一篇 5000 字的行业报告。

大模型大数据攻城狮的专栏 2510

poj 1692 Crossed Matchings(DP)

Crossed Matchings Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2717 Accepted: 1763 Description There are two rows of positive integer numbers. We ca

君只见独不见的专栏 1022

全志V3S嵌入式驱动开发(uboot移植)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 安装了ubuntu操作系统,有了开发板,下面就可以进行我们的开发工作了。第一步,我们要面临的问题就是uboot移植。一般来说,嵌入式的基础环境就是uboot、linux和rootfs。uboot完成一些基本硬件的初始化,比如cpu频率设置、ddr初始化、加载linux等等。早前,uboot的烧入比较麻烦,需要jtag工具才能完成。现在来说,很多soc支持系统直接从sd卡启动,这对开发

嵌入式-老费,一个分享专业嵌入式知识的blog 2818

POJ 1692 Crossed Matchings(DP)

题意  有两行数a[n1] b[n2]   分别有n1 n2个数   当第一行一个数和第二行一个数相等时   他们就可以连起来   每个数只能连一个   求最有多少条线使得每条都至少有一条和它相交 令d[i][j]表示  a的前i个数和j的前j个数最多可以连接多少条 当a[i]==b[j]时  将们连起来是肯定不与其它线相交的  所以d[i][j]=max(d[i-1][j],d[i][j-1

Deng's site \# 676

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

poj1692 Crossed Matchings(dp,最长公共子序列变形,好题)

Crossed Matchings Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2838   Accepted: 1840 Description There are two rows of positive integer numbers. We can dr

fouzhe的博客 629

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

POJ 1692 Crossed Matchings(DP)

题意:两个序列,要选出交叉线,使得线的两点数字要相同,并且两条线两边的数字不能相同,问最多能弄出几组 思路:类似LCM,dp[i][j]表示两个i, j的方案,然后如果a[i] != b[j], 那么从i和j分别往前找到一个相同dp[i][j] = dp[k1][k2] + 2,剩下的转移就是dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) 代码: #in

Remilia's 667

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

POJ1692 Crossed Matchings(dp)

Crossed Matchings Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2938   Accepted: 1910 Description There are two rows of positive integer numbers. We can

H煊的博客 715

POJ 1692 Crossed Matchings(dp).

~~~~ 题意:给出两行数字序列,求上下匹配的最多组数是多少. 匹配规则: 1.匹配对的数字必须相同。 2.每个匹配必须有且只能有一个匹配与之相交叉,且相交叉的两组匹配数字必须不同。 3.一个数最多只能匹配一次。 最长公共子序列的改编,令f[i][j]表示第一个序列的前i个数字和第二个序列的前j个数字的匹配的最优值。 状态转移:f[i][j]=max(f[p-1][q-1]+2,

ACM之路,在希望的田野上。 1074

POJ - 1692 Crossed Matchings(DP)

解题思路:慢慢练,相信以后也可以自己想到递推式!!用dp[i][j]代表第一行第1~i个和第二行第1~j个之间的最多连接数。先不考虑将a[i],b[j]连线的情况,肯定有dp[i][j]=max(dp[i][j-1],max(dp[i-1][j],dp[i-1][j-1]));然后再考虑连线的情况。如果a[i]==a[j],那么将a[i]和b[j]连线是毫无意义的,因为不可能产生相交,所以要考虑不相等的情况,这个时候应该怎么办呢。这里用到了贪心的思想,将第二行与a[i]最近相等的相连,和第一行与b[j]最近

LP_Cong 495

POJ 1692 Crossed Matchings (DP) #by Plato

http://poj.org/problem?id=1692 题意:两个集合分别有N1、N2个元素,求最大匹配交叉对的数目。(匹配交叉对:a和b中有两个元素相等,称其为value-match;现在是要有两个va-match,vb-match,并且他们相交,va!=vb) Idea: 类似LCS; f[i] = MAX{f[i-1][j-1] ,f[i][j-1],f[i-1][j] }

XDU_Truth的专栏 634

POJ 1692 Crossed Matchings(DP)

Description There are two rows of positive integer numbers. We can draw one line segment between any two equal numbers, with values r, if one of them is located in the first row and the...

weixin_30412013的博客 72

POJ1692 Crossed Matchings

POJ1692 Crossed Matchings

Kanosword的博客 768

POJ 1692 Crossed Matchings

POJ 1692 Crossed Matchingsdp 传送门:HustOJ 传送门:POJ 题意给出两行数,求上下匹配的最多组数是多少。 匹配规则 1,匹配对的数字必须相同 2.每个匹配必须有且只能有一个匹配与之相交叉,且相交叉的两组匹配数字必须不同 2,一个数最多只能匹配一次 分析用dp[i][j]表示第一行取i个数,第二行取j个数字的最多匹配项 对于某个dp

P.H.S 303
上一篇: poj 1682 Clans on the Three Gorges dp(好题)
下一篇: poj 2142 The Balance 扩展欧几里得
ACMer_浩
博客等级 码龄12年 0粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值