当前位置: 首页 > news >正文

洛谷 P4832 珈百璃堕落的开始 题解

题目链接

洛谷 P4832 珈百璃堕落的开始

模板:背包题型

思路分析

首先,根据提示,结果为整数即为 sc 的个数一样,最大整数答案即为在此前提下 s 的个数。所以,对于这些式子,我们先求出其中 sc 的个数,然后以个数的差值为物品代价,以 s 的个数为物品价值,答案为总个数差值为 \(0\) 时的最大价值。所以这题就变为了有负代价的背包问题,详见洛谷 P2340 题解。这里给出另一种做法:

还是先将下标加上数据范围,这里为 \(10^6\),总下标即为 \(0\sim 2\times 10^6\)。然后,对于滚动数组优化,由于存在负代价,可能会使用已经更新过的数据(减去负值即为加上一个正值),所以可以如链接中所说分类处理,或者保留上一层结果,如代码中 dp[2][M],考虑 dp[i][] 时,其所需要调用的 dp[i^1][] 未被修改。

优化

但是,若直接全部循环,时间复杂度可以卡至 \(O(10^{14})\),明显会 T,考虑优化。我们发现,\(n\times m\) 的数据规模可以通过,但是题目中没有给出 \(n\) 的范围,说明正解应跟 \(n\times m\) 整体有关。我们发现,每次都全部循环,可能有些下标不可能实现,我们可以动态更新每次循环的上下界,就是一道经典的贪心题:

给定数列 \(a_{[1..n]}\),从中选出一些数求选出来的数的和的最大值

得到结果之后,我们从初始状态 \(dp_{10^6}\) 向两边扩展即可,时间复杂度优化为 \(O(nm)\)

代码呈现

#include<bits/stdc++.h>
using namespace std;const int M=2e6+10;
int n,m;
int dp[2][M]; // 滚动数组优化int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>n;memset(dp,-0x3f,sizeof dp);dp[0][int(1e6)]=dp[1][int(1e6)]=0;int l=1e6,r=1e6;for (int i=1;i<=n;++i){string s;  cin>>s;int cnt1=0,cnt2=0; // s,c 的数量for (auto j:s){if (j=='s') ++cnt1;else if (j=='c') ++cnt2;}int cnt=cnt1-cnt2;m+=cnt1+cnt2,l=min(l,l+cnt),r=max(r,r+cnt);for (int j=l;j<=r;++j) // 左右边界!!!dp[i&1][j]=max(max(dp[i&1][j],dp[(i&1)^1][j]),dp[(i&1)^1][j-cnt]+cnt1);}printf("%d",dp[n&1][int(1e6)]);return 0;
}
http://www.jsqmd.com/news/750111/

相关文章:

  • 用Python复现小龙虾优化算法COA:从公式到代码的保姆级拆解(附避坑指南)
  • 从外部中断到外部时钟:两种STM32读取YF-S401脉冲的方法,哪种更适合你的项目?
  • Audamo:为极简Linux桌面实现自动化昼夜主题切换
  • 3分钟掌握终极Cookie导出方案:本地安全导出浏览器Cookie的完整指南
  • 从爬虫到工具:我是如何分析XMeta接口并封装成一个PHP查询工具的(附避坑指南)
  • 5分钟快速掌握Switch游戏文件管理:NSC_BUILDER终极指南
  • 4种飞行物数据集31909张VOC+YOLO格式
  • 火山引擎方舟API工具扩展指南
  • 线段树的区间修改和懒标记
  • 从零构建极简静态网站:复古项目www-sacred的现代启示
  • BetterNCM安装器终极指南:一键解锁网易云音乐隐藏功能
  • 基于多目标优化的PC连续刚构桥预应力钢束配束设计【附代码】
  • 第1篇:认识仓颉——搭建开发环境 仓颉原生中文编程
  • 3分钟极速上手:Thorium浏览器让老旧电脑也能流畅上网的秘诀
  • # 造过轮子的人学框架有多快——我自己写完IOC和AOP,Spring就是换个API
  • 迭代与递归
  • 3步解锁QQ音乐加密音频:macOS免费高效转换终极方案
  • HoYo-Glyphs终极指南:11款米哈游游戏字体从安装到创意应用完整教程
  • 具身智能体系统Dugong:从AI推理到实时空间界面的编译与渲染
  • 魔兽争霸3完全优化指南:WarcraftHelper 2025简易配置教程
  • 鸣潮工具箱WaveTools:3步轻松解锁120帧与智能抽卡分析
  • 国家安全部曝光AI“投毒”产业链:你平时用的AI,可能早就被人动了手脚
  • LinkSwift:八大网盘直链解析终极解决方案,彻底告别下载限速烦恼
  • 3个核心场景+5个实战技巧:XHS-Downloader如何帮你高效管理小红书内容资源
  • 2004年的Java项目翻出来了我哭了——一个老程序员的回忆杀
  • 别再傻傻分不清!手机卡顿、电脑慢?可能是你的EMMC、UFS、SSD没选对
  • 内容创作平台集成 Taotoken 实现多模型文本生成与优化
  • AT24C02页写翻车实录:我的参数为什么被覆盖了?详解EEPROM页边界与防覆盖技巧
  • 提升arm7开发效率:快马智能生成常用驱动与模块代码库
  • 5步解锁NVIDIA显卡隐藏性能的完整指南:NVIDIA Profile Inspector实战教程