Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2) C 【暴力枚举+dp】

求最长公共子序列长度(nlogn)【 包含了求最长上升子序列长度(nlogn)】 这里只说步骤吧,至于原理,可以自己百度找找; 假设两个序列   A,B,找两者的最长公共子序列; 第一步: 我们要去找出 A中所有与 B 相同的元素,这些元素在 B中的位置,各自为一个集合;比如 A = { a c f  d }  ,B = { c f g c a } , 则有  (从 i = 1 开始 )a ={ 5 } , c = { 1 ,4  } , f = { 2 }; a 这个元素... 阅读详情

题目链接:http://codeforces.com/contest/1060/problem/C

思路:

一些暴力看起来会超时的题目还是有必要尝试一下的 ;

题目的意思可以转换成:求两个数组的区间和的最大长度和,并且两个区间和的乘积小于等于x

给出的数组只有2000个,求出所有区间和的时间复杂度大概是4*10^6,求两个数组的区间和就只是多一个常数; 假设一个数组的某个区间和是 n,只需要在另一个数组的区间和中二分找 x/n 的值,得到一个下标 p,那么0到p内在数值上是符合题意的,接下来要解决的就是在0到p中找区间长度最长的,才能得到题目要求的最大值;如果这一步仍然用暴力枚举去找就会超时,这里可以通过一个简单的dp处理一下,因为0和p的的区间和是肯定符合题意的,我们只需要用数组记录前i个区间和中最大区间长度是多少就行了,这样就不用一个个遍历,只需要直接取值就行了;

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>

using namespace std;

const int Maxn = 2e3+10;

struct Node {
	int cnt, sum;  // cnt 区间长度,sum 区间和 
	bool operator < (const Node &a1) const {
		return sum < a1.sum;
	}
} N[Maxn*Maxn], M[Maxn*Maxn];

int sN[Maxn], sM[Maxn], num[Maxn*Maxn];

int main (void)
{
	int n, m, x, tmp;
	scanf ("%d%d", &n, &m);
	for (int i = 1; i <= n; ++i) {
		scanf ("%d", &tmp);
		sN[i] = sN[i-1]+tmp;
	}
	for (int i = 1; i <= m; ++i) {
		scanf ("%d", &tmp);
		sM[i] = sM[i-1]+tmp;
	}
	scanf("%d", &x);
	int n1, m1;
	n1 = 0;
	for (int i = 1; i <= n; ++i) {
		for (int j = i; j <= n; ++j) {
			if(sN[j]-sN[j-i] > x) continue;
			N[n1].cnt = i; N[n1].sum = sN[j]-sN[j-i];
			n1++;
		}
	}
	m1 = 0;
	for (int i = 1; i <= m; ++i) {
		for (int j = i; j <= m; ++j) {
			if(sM[j]-sM[j-i] > x) continue;
			M[m1].cnt = i; M[m1].sum = sM[j]-sM[j-i];
			m1++;
		}
	}
	int ans = 0, p, index;
	sort (N, N+n1); sort (M, M+m1);
	
	num[0] = M[0].cnt;
	for (int i = 1; i < m1; ++i) {  // num[i] 为M[]的前i个区间长度的最大值 
		num[i] = max (num[i-1], M[i].cnt);
	}
	
	for (int i = 0; i < n1; ++i) {
		index = x/N[i].sum;
		int L = 0, R = m1, mid;
		while (L < R) {
			mid = (L+R)/2;
			if (M[mid].sum > index) R = mid;
			else L = mid+1;
		}
		if (--R < 0) continue;  // 上面的二分求得是大于index的,要-1 
		ans = max (ans, N[i].cnt*num[R]); 
	}
	printf ("%d\n", ans);
	return 0;
 } 

 

Halcon实战:5分钟搞定灰度图转热力图(附完整代码) 本文提供了一份Halcon实战指南,详细讲解如何在5分钟内将灰度图转换为直观的热力图。通过核心代码演示了利用HSV颜色模型进行色彩映射的原理与步骤,包括图像归一化、通道构建与空间转换,并附赠了深度图可视化等进阶应用技巧,帮助工程师快速提升图像分析效果。 阅读详情

相关推荐

ICG setup timing violation介绍?

门控时钟(clock gating)在RTL级电路设计过程中进行低功耗优化常用方法,能够有效降低动态功耗(翻转功耗)。Clock gating cell 可以由与门,与非门,或门或者或非门构成,但很容易产生Glitch。在实际使用中,一般用ICG(集成门控时钟单元)来完成clock gating。 下图展示了glitch的产生原因 在CTS时钟树综合的时候,ICG不会被看作sink,通常放置在source点附近,因此就会出现如上图这种结果。上图可以看出,在分析DFF到ICG的setup timing

m0_61003348的博客 9807

Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2) D

D. Social Circles time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output You invited n guests to dinner! You plan to arrange one or more circles ...

loooooog的博客 411

从Zemax到Speos:HUD设计数据无缝迁移避坑指南(含STEP文件精度验证)

本文详细介绍了从Zemax到Speos的HUD设计数据无缝迁移方法,重点解决Zernike曲面参数保真、虚拟厚度设置和坐标系对齐等核心问题。通过STEP文件精度验证和工程化解决方案,帮助工程师避免数据迁移中的常见陷阱,提升HUD系统设计效率。适用于Ansys Zemax和Ansys Speos用户,优化光学性能验证流程。

h6i7j8的博客 1063

Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2)部分题解

Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2) 前言 话说CF的比赛在下午真的是千年难遇,所以我和几个同学组团,去打了CF,还创了一个流毒的群: 但是我虽然回了一点rating,我还是绿的QAQ。。。 A. Phone Numbers ◇题目传送门◆ 题目大意 给定 ...

IDDFS 693

震坤行:企业 MRO 物料标准化革新之路

那产生这些问题的原因是什么呢?要想解决此问题,企业高层必须下定决心对历史数据进行梳理,并善于利用信息技术,融合企业管理的流程机制,建立起一套适合企业发展的物料标准化管理体系,循序渐进,逐步规避由物料不规范带来的管理问题,最终使得这套标准化体系能够满足企业多元化业务发展需要。国内某电子制造头部企业原先内部物料无对应分类,仅有物料编码,给企业对采购、领料的过程中造成极大的不变,基于震坤行的目录结构,预测物料对应的分类,预测准确率达到80%以上,再辅以人工校正,最终搭建起一套标准的目录体系,如图2.2所示。

carson99的博客 421

华为ENSP虚拟网络与本地物理网卡高效桥接实战指南

本文提供了一份详细的华为ENSP虚拟网络与本地物理网卡桥接实战指南。通过清晰的四步操作,帮助用户打破虚拟实验环境的“孤岛”限制,实现ENSP设备与真实局域网及互联网的互通,从而进行更真实的协议测试、软件升级和混合网络环境搭建。

qsc90123456的博客 537

Codeforces Round #438 by Sberbank and Barcelona Bootcamp (Div. 1 + Div. 2 combined)

A #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define LL long

傻傻分不清、 359

Hermes Agent vs OpenClaw:2026 年开源 AI Agent 框架深度对比

两款 2026 年最受关注的开源 AI Agent 框架,一个主打「自进化」,一个聚焦「网关路由」——它们究竟有何不同?本文将从架构原理、核心机制、使用方式到适用场景,为你全面拆解。无论你是 AI 研究者、开发者,还是想用 AI 提升工作效率的个人用户,这篇文章都将帮助你做出最适合的选择

程序猿_三产 3747

Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2)

传送门:http://codeforces.com/contest/1060 目录 A.Phone Numbers 题目 题解 代码 B. Maximum Sum of Digits 题目 题解 代码 C. Maximum Subrectangle 题目 题解 代码 D. Social Circles 题目 题解 代码 E. Sergey and Subway ...

zxwsbg的博客 321

Unity轻量级框架QFramework:四层架构与命令事件驱动的实战指南

在Unity游戏开发中,软件架构是确保项目可维护性和可扩展性的核心。通过分层架构(如MVC、DDD)和事件驱动设计,开发者能够有效管理代码复杂度,实现模块间的解耦与高效通信。QFramework作为一个轻量级框架,精准地运用了这些原理,通过严格定义的四层架构(表现层、系统层、数据层、工具层)和命令/事件通信规则,为中小型项目提供了“约束下的自由”。其核心价值在于以极简的代码(不足1000行)强制实施清晰的职责分离,如使用命令模式集中管理状态变更,并通过事件驱动实现响应式更新。这种设计特别适用于解决项目规模扩

weixin_42521032的博客 262

Linux 命令之 locale -- 设置和显示程序运行的语言环境

文章目录命令介绍locale 设置规则使用详解(一)查看当前 locale 设置(二)查看当前系统所有可用 locale(三)设置系统的 locale 命令介绍 locale 是 Linux 系统中多语言环境的设置接口,在 Linux 中,使用 locale 命令来设置和显示程序运行的语言环境,locale 会根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统定义一个软件运行时的语言环境。 通过 locale 来设置程序运行的不同语言环境,locale 由ANSI C提供支持。locale 的

liaowenxiong的博客 3万+

Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2) B. Maximum Sum of Digits

传送门   题目大意就是给一个数c,然后拆成a和b,使得a+b=c,要求使得a的各数位之和+b的各数位之和达到最大。   我的想法就是可能不能单独考虑a的数位之和或b的数位之和,要综合考虑才能达到最优,先来看ci,ci=ai+b+flag的,这里的flag是前一位(较低位)的进位,存在是0,否则是1,若是ci-flag!=9的时候,ai+bi有2个取值,一种是ai+bi=ci-flag,另外一...

SEIZE THE DAY 225

华为OD机考双机位C卷 - 采购订单 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 采购订单 。提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。

算法大师! 426

poj 1742 Coins 【多重背包+二进制拆分优化】

  Coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3969    Accepted Submission(s): 1578   Problem Description Whuacmers use coins.They...

Y390d的博客 3046

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Codeforces Round #523 (Div. 2) C. Multiplicity 【dp】

题目链接:http://codeforces.com/contest/1061/problem/C 思路: 像类似这种求有衔接关系的数列要第一时间想到  dp[ i ] = dp[ i ] + dp[ i - 1 ] 这种状态的dp,为什么? 假设我要让一个原数组下标为 4的数变成下标为 3 的数,那么要想数列存在,那么 必须存在 至少一个 长度为2的数列,在这些数列的尾部加上这个原数组下标...

Y390d的博客 612

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

POJ 2576 Tug of War 【二维01背包】

  Tug of War Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 9236   Accepted: 2572 Description A tug of war is to be arranged at the local office picnic. For the tug of...

Y390d的博客 559

最大连续子序列 【递推(dp)】

    给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ...,  Nj },其中 1 &lt;= i &lt;= j &lt;= K。最大连续子序列是所有连续子序列中元素和最大的一个,  例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和  为20。  在今年的数据...

Y390d的博客 386

HDU - 2546 饭卡 【01背包+排序】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546 题目问的是最小容量,而且容量可能会负数,我们可以换个角度解决问题,比如题目允许的容量是 5~m,我们可以把容量设置成 m~2*m-5,这样做的好处是能把可能为负数的结果变成正数,那么就可以用01背包求解问题(dp[容量]),求的是最大值。 另外需要给价格排序,比如下面这个两个数据,自己可以...

Y390d的博客 350

POJ 2018 【二分答案+dp求最大区间段】

题目链接:http://poj.org/problem?id=2018 从0到2000000(2000*1000) 枚举平均值,让数组统一减去枚举的平均值,如果存在区间和大于等于0的,就说明答案是成立的。 关键是如果求最大的区间和。 假设不限制区间的长度,求某一个数组的最大区间和应该怎么求? 如果dp[i]表示的是某左界到右界 i 的最大区间和,那么dp[i+1] 应该如果求? 因为要求...

Y390d的博客 347

Educational Codeforces Round 59 (Rated for Div. 2) D Compression 【dp】

题目链接:http://codeforces.com/contest/1107/problem/D 这道题只要把主要问题找出来就有思路了。 题目的矩阵是 n*n的,要想压缩成 n/x *n/x 的矩阵需要满足一个条件,假设x == 2,那么这个矩阵将会被分成4小块矩阵,如果这四个小矩阵每一块要么全是1要么全是0,那这个矩阵就能压缩成n/2 *n/2的矩阵。 因为题目给的n比较大,如果暴力求小...

Y390d的博客 338

HDU 1114 Piggy-Bank 【完全背包(时间优化)】

    Problem Description Before ACM can do anything, a budget must be prepared and the necessary financial support obtained. The main income for this action comes from Irreversibly Bound Money (IBM)...

Y390d的博客 301

HRBUST - 2382 极难的问题 【数位dp + 二分】

题目链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&amp;a=showProblem&amp;problem_id=2382 思路: 数位dp能够求出0到m区间内的符合某个条件的数字个数,在数位dp的条件下通过二分找出符合题意的那个数字 需要注意的是,题目的n虽然是int范围内的,但是n代表的是符合题意数字的个数,所有实际需要找的范围应...

Y390d的博客 280

FZU 2214 Knapsack problem 【01背包】

题目链接:https://cn.vjudge.net/problem/FZU-2214 思路: 背包的容量太大,dp 改成前 i个物品,价值为 v的容量是多少;(原本应该是前i个物品容量为 w的最大价值)现在改成v的最小容量; 代码: #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;algorithm&gt; #inc...

Y390d的博客 234

LightOJ - 1079 Just another Robbery 【概率背包】

题目链接:https://vjudge.net/problem/LightOJ-1079 需要注意的是,要想连续抢多家银行就得保证抢前面的银行没有被抓,所以样例1中抢1和2两家银行的概率是 0.02 + (1-0.02)*0.03; 这里的背包dp[i] 中的i是val,价值; #include &lt;iostream&gt; #include &lt;cmath&gt; #includ...

Y390d的博客 220

POJ 3080 Blue Jeans 【KMP+DP】

The Genographic Project is a research partnership between IBM and The National Geographic Society that is analyzing DNA from hundreds of thousands of contributors to map how the Earth was populated.  ...

Y390d的博客 206
上一篇: HDU 5983 Pocket Cube 【模拟】
下一篇: POJ 2635 The Embarrassed Cryptographer 【千进制高精度取模 / JAVA】
Y390d
博客等级 码龄9年 11粉丝 165原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值