HDU 2845 Beans

手把手教你学 GPU SoC 芯片(9.3)--GPU SOC 功耗和热管理的动态电压和频率调整(DVFS) 通过动态电压和频率调整(DVFS),可以有效地管理GPU SoC的功耗和热管理。合理的DVFS策略不仅可以节省功耗,提高能效,还可以延长设备的使用寿命。 阅读详情

传送门

最大不相邻子序列和(二维版本)。(没有负数的版本)

这个题先要求出每行的最大不相邻子序列和(所谓不相邻,就是指这个子序列的每个元素在原数组里都是不相邻的),然后将这个矩阵的每行的最优解都当成一个元素,对这个列向量再应用以上。

输入按先行再列,所以边输入边求解,也没必要搞二维数组了(这题只给你一个n*m上限就是逼你这么做的)。

没有负数的情况下,可以想到,最优解的两个元素中间最多隔两个。还是按照最大子串和那样的想法来做,dp[i]表示以当前元素为尾的子问题的最优解,那么dp[i] = a[i] + max(dp[i-2], dp[i-3])。最后的答案在dp[N-1]和dp[N]中产生。

这道题是没有负数的,如果有负数该怎么变?我想的是,首先dp[i]=a[i],其次在dp[1]~dp[i-2]中找一个最大值,如果这个最大值不小于0,则加到dp[i]上面。最后,枚举每个dp[]获得答案。(时间复杂度上升到O(n^2),类似LIS问题了(但LIS问题即使没有负数也不能O(n)解决))


#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <string>
#include <queue>
using namespace std;
                                  // 不支持负数
int N, M;
int row[200000];                  // 把每行都看成一个元素,以当前行元素结尾的不相邻子序列的最大值,必定包含当前行元素
int col[200000];                  // 当前行的以某列元素结尾的不相邻子序列的最大值,必定包含当前元素,只对应当前行

int main()
{
	for (; ~scanf("%d%d", &N, &M);)
	{
		for (int i = 0; i < N; i++)
		{
			for (int j = 0; j < M; j++)
			{
				scanf("%d", &col[j]);
				if (j == 2) col[j] += col[j - 2];
				else if (j > 2) col[j] += max(col[j - 2], col[j - 3]);
			}
			row[i] = M == 1 ? col[M - 1] : max(col[M - 1], col[M - 2]);       // 和最后答案处的判断一样。。
			if (i == 2) row[i] += row[i - 2];
			else if (i > 2) row[i] += max(row[i - 2], row[i - 3]);
		}

		printf("%d\n", N == 1 ? row[N - 1] : max(row[N - 1], row[N - 2]));
	}

	return 0;
}

还有一种我两年前写的(应该不是自己想的)做法我看不懂了,也对,这个里面dp[i]不一定包括当前元素。这个做法同样也不支持负数。


#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <string>
#include <queue>
using namespace std;

int M, N;
int b[200000];                       // 0~i 数组中各不相邻元素最大和(不一定有i)
int c[200000];                       // 不支持负数??(17.6.6)   对,不支持(19.4.24)
                                     // 可以证明其最大和在两个元素间最多空两个
int main()
{
	int a;
	for (; ~scanf("%d%d", &M, &N);)
	{
		for (int i = 0; i < M; i++)
		{
			for (int j = 0; j < N; j++)
			{
				scanf("%d", &a);
				if (j == 0) b[j] = a;
				else if (j == 1) b[j] = max(b[j - 1], a);
				else b[j] = max(b[j - 1], b[j - 2] + a);
			}
			if (i == 0) c[i] = b[N - 1];
			else if (i == 1) c[i] = max(c[i - 1], b[N - 1]);
			else c[i] = max(c[i - 1], c[i - 2] + b[N - 1]);
		}
		printf("%d\n", c[M - 1]);
	}

	return 0;
}
大模型安全-生成检测-事实核查-攻击-防御-思考-记忆-融合-语音相关研究 2025年版 本文整理了关于大模型安全领域的综合性资源,包括7篇综述论文、9个安全数据集以及5篇强化学习相关的安全研究论文。主要涉及大模型的对抗攻击、隐私保护、安全评估等方向,涵盖TruthfulQA、ToxiGen等知名数据集和TrustLLM、HarmBench等关键研究。资源包括知乎博主分享、arXiv预印本和顶会论文,并附有详细的中文讲解链接,为研究者提供了系统性的安全研究参考。 阅读详情

相关推荐

Docker离线部署OpenWebUI操作步骤

docker离线部署openwebui

m0_49333265的博客 4347

hdu2845: Beans

hdu2845: http://acm.hdu.edu.cn/showproblem.php?pid=2845题意:吃豆:如果吃了某个豆(x,y),则x-1和x+1两行都不能吃,(x,y-1)、(x,y+1)也不能吃,求最多能吃多少豆 解法:dp:先算行,再算列,列的算法和行的类似,dp[i][j]表示在第i行中,直到第(i,j)个点的最优值,有状态转移方程:dp[i][j]=max(dp[i]...

weixin_30443075的博客 89

VSCode+PlatformIO新建工程卡成狗?3步提速大法实测有效(附镜像源配置)

针对VSCode+PlatformIO新建工程时因依赖下载缓慢导致的加载慢问题,本文提供了三步核心提速方案。通过配置Python环境变量、修改PlatformIO插件设置以使用国内镜像源,并优化pip配置文件,实测可大幅缩短工程创建时间,有效解决创建工程卡顿的痛点。

delta的博客 711

HDU 2845(Beans)动态规划

题目要求选数和最大,选了这个数,这个数的上下两行和左右两个数就不能选了,不是上下左右那四个数。 那就先把每行的最大和(不相邻)算出来最为一个数,然后再同样的方法算一遍这几个数和最大,最后就是要求的和最大。 代码: #include #include int a[200010],b[200010]; int Max(int x,int y) { return x>y?x:y; }

小铅笔 464

libcurl库使用详情、libcurl库的制作

​ libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。libcurl的官网 、库下载。这种库使用的时候就像使用wiringPi库一样,编写完代码需要链接这个库,所以要先下载这个库。libcurl的使用(其实和socket编程时一样,都需要一定的步骤):

qq_45698138的博客 5337

C#与发那科机器人通信实战:从SDK配置到机械臂控制

本文详细介绍了如何使用C#与发那科机器人进行通信,从SDK配置到机械臂控制的完整实战流程。内容包括环境准备、通信连接建立、机械臂运动控制、异常处理与状态监控,以及高级功能实战,帮助开发者快速掌握工业机器人编程技术。

weixin_42524276的博客 458

求数组非连续子序列的最大和

题目描述:1. 一个整数数组L,如 L=[2,-3,3,50], 求L的一个非连续子序列,使其和最大,输出最大子序列的和。这里非连续子序列的定义是,子序列中任意相邻的两个数在原序列里都不相邻。例如,对于L=[2,-3,3,50], 输出52(分析:很明显,该列表最大非连续子序列为[2,50])。测试例子:L=[-2,-3,3,50,1,-1,100] 。用动态规划的思想:public class ...

春华秋实 6928

VPI与Matlab协同仿真:相干光通信接收端DSP算法全解析

本文详细解析了如何利用VPI与Matlab协同仿真,构建完整的相干光通信接收端DSP算法处理闭环。重点介绍了从VPI导出数据后,在Matlab中实现时钟恢复、偏振解复用和载波相位估计等核心算法的步骤与原理,并阐述了如何通过误码率计算完成仿真验证,为相干光通信系统算法研究与验证提供了高效实用的方法。

ll5678的博客 610

HDU-2577 How to Type || HDU-2845 Beans

题目: 2道类型相似的dp。 HDU-2845 Beans: 题意: 给出一个二维数字矩阵,其中每个点存放着豆子,求出能够吃到的最大豆子数 要求:每吃一个格子里的豆子,这个格子两边的两格和上下两行都不能吃了。 思路: 每个点都只有吃或不吃两种状态,两个数组分别储存吃与不吃该点时的最优解。 求出每一行的最优解之后看作一列求整体最优解。 代码: #defin

MyWorld 485

【Bug已解决】codex: tool call timeout / Function execution exceeds limit — CodeX CLI 工具调用超时解决方案

CodeX CLI 工具调用超时(Bash/文件/MCP)的解决方案,含增加超时、拆分命令、后台运行、避免交互卡住与限制读取。

博客 4204

基于ENVI完成影像的去云操作以及后续处理

利用ENVI完成重采样影像的去云操作 由于SNAP重采样之后的影像是分波段保存的,ENVI的波段运算工具一次也只能输出一个波段,所以去云的操作分波段进行,原理是掩膜法 下面是打开所有波段后的界面 去云的依据是以quality_scene_classification栅格文件为基础,该文件是哨兵2数据自带的场景质量分类图,包含12个级别,可以通过SNAP软件查看,如下图所示: 对于去云操作而言,我们只需要DARK_FEATURE_SHADOW(地形等),CLOUD_SHADOW(云阴影)、CL

lemon_tttea的博客 2万+

HDU 2845 Beans 行列dp

HDU 2845 Beans Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3118    Accepted Submission(s): 1506 Problem Description Bean-ea

TaoSama's Microcosm 520

Avalonia 超级详细学习指南

什么是 Avalonia?Avalonia 是一个开源的、跨平台的 GUI 框架,允许开发者使用 XAML 和 C# 构建现代化、高性能的桌面应用程序。与其他框架相比,Avalonia 具有强大的跨平台能力和灵活的界面设计。} }()Avalonia 的特点和优势跨平台性:Avalonia 可以在 Windows、Linux、macOS 等多个平台上运行,开发者可以编写一套代码,然后在不同的操作系统上运行相同的应用程序。

仰望星空的博客 1万+

hdu 2845 Beans

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2845   题目描述:   Description Bean-eating is an interesting game, everyone owns an M*N matrix, which is filled with different qualities beans. Meantime...

逍遥 315

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

老版QQ原生表情gif动态

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

HDU 2845 Beans

Beans Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1819Accepted Submission(s): 921 Problem Description Bean-eating is an intere...

anvt77205的博客 136

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

hdu2845_Beans

http://acm.hdu.edu.cn/showproblem.php?pid=2845 把每一行单独出来,如果取了x[i],那么x[i-1]和x[i+1]都不可以取。求这样应该如何取数使所取的数的总和最大? 对于每个数,有取和不取两个状态: b[i][

小小菜鸟蛋の小窝 987

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

HDU 2845 DP Beans

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2845 分析:题目意思就是不能有任何两个数在相邻的行和相邻的列中,先对某一行分析,如果先取了第1个数,则接下来可以取第3或4个数(因为求所有取的数之和最大,所以不可能一下跳过3个以上),如果先取第2个数,接下来可以取第4或5个数,依此类推...... 从这里可以观察到,当取到第4个数时,所有取出数的

PWZER 613

HDU2845 Beans

Description Bean-eating is an interesting game, everyone owns an M*N matrix, which is filled with different qualities beans. Meantime, there is only one bean in any 1*1 grid. Now you want to eat the ...

邵光亮的博客 749

hdu2845之Beans,DP

hdu2845之Beans,DP 2012-12-08 16:12 533人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载。 Problem Description Bean-eating is an interesting game, everyone owns an M*N matrix, which is filled with different q

Davenny:~我今天该吃点什么捏~ 337
上一篇: HDU 2577 How to Type
下一篇: HDU 2830 Matrix Swapping II
Crossing over
博客等级 码龄10年 6粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值