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

AtCoder Beginner Contest 346

D - Gomamayo Sequence 

状态DP

题意:给定一个长度为n的01字符串,使得只存在一组s[i]=s[i+1] 其余都是不同的,若使0改变为1 会花相应的费用 a[i] 求最小值

思路:数据为2e5数据太大,贪心不可以想到dp--状态dp 构造01串 花费最小 --难点在于 要考虑两个状态dp去存储 若s[i]==s[i+1] 则s[1...i]之间都是不同的 s[i+1..n]之间都是不同的 若只采用一个状态dp是无法存储后面的是什么样的--由此想到两个状态dp--一个存储前面是01或10串 一个从后面往前遍历去存储01或10串

dp[2][i] -- dp[0][i]表示前[1...i]之间都是不同的字符串 ,且当前i的字符为0的花费

             --  dp[1][i]表示前[1...i]之间都是不同的字符串,且当前i的字符为1的花费

rdp[2][i]-- rdp[0][i]表示前[i...n]之间都是不同的字符串 ,且当前i的字符为0的花费

              --  rdp[1][i]表示前[i...n]之间都是不同的字符串,且当前i的字符为1的花费

#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=2e5+10;
const ll INF=1e18;
ll dp[2][N],rdp[2][N];
ll a[N];
int main()
{int n;cin>>n;string s;cin>>s;s='0'+s;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<s.size();i++){if(s[i]=='0'){dp[0][i]=dp[1][i-1];dp[1][i]=dp[0][i-1]+a[i];}else{dp[1][i]=dp[0][i-1];dp[0][i]=dp[1][i-1]+a[i];}}for(int i=s.size()-1;i>=1;i--){if(s[i]=='0'){rdp[0][i]=rdp[1][i+1];rdp[1][i]=rdp[0][i+1]+a[i];}else{rdp[1][i]=rdp[0][i+1];rdp[0][i]=rdp[1][i+1]+a[i];}}ll ans=INF;for(int i=1;i<n;i++){ans=min(ans,dp[0][i]+rdp[0][i+1]);ans=min(ans,dp[1][i]+rdp[1][i+1]);}cout<<ans<<endl;return 0;
}

E - Paint

模拟 

H行W列,一开始都是颜色 0,你需要进行M次操作

每次操作:

若Ti=1,把Ai行全部改成 Xi 颜色

若Ti=2,把Ai列全部改成 Xi 颜色

操作全部执行完了之后,按升序输出所有颜色有几个。

思路:从后往前遍历

考虑到重复操作,前面会后面的覆盖,所以逆序遍历操作,如果对重复行列操作就不执行。

并且每刷一行之后,如果下一次刷列,显然就会有一个数不能再刷了。

#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
typedef long long ll;
const int N=2e5+10;
map<int,ll>mp;
bool st1[N],st2[N];
int h[N],l[N];
int a[N],b[N],c[N];
int main()
{int h,w,m;cin>>h>>w>>m;ll res=(ll)h*w;for(int i=1;i<=m;i++) cin>>a[i]>>b[i]>>c[i];//从后往前遍历 若已经遍历过的行和列便不在遍历for(int i=m;i>=1;i--){if(a[i]==1){//若行没有遍历过if(!st1[b[i]]){if(w>0) {  //相当于加上列的个数减去已经遍历过的行的个数mp[c[i]]+=w;h--;st1[b[i]]=1;		}  }}else{//若列没有遍历过if(!st2[b[i]]){if(h>0){//相当于加上行的个数减去已经遍历过的列的个数mp[c[i]]+=h;w--;st2[b[i]]=1;}}}}for(auto it:mp){if(it.second>0) res-=it.second;}if(res>0) mp[0]+=res;cout<<mp.size()<<endl;for(auto it:mp){cout<<it.first<<" "<<it.second<<endl;}return 0;
}

F - SSttrriinngg in StringString

二分+找边界点

 题目大意​​​​​​​

给定两个字符串s,t,定义 f(s,n)表示将字符串 s重复拼接 n次。 g(t,k)表示将 t的每个字符重复 k次得到。

给定 n,问最大的 k,使得 g(t,k)是 f(s,n)的子序列(可以是不连续的)。

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long ll;
const int N=2e5+10;
vector<ll>v[N];//存每个字母在s中对应的下标
ll cnt[30][N];//二维前缀和 记录 当前cnt[i][j] 记录当前长度为j时的i的个数
string s,t;
ll n;
//判断的标准是个数
bool check(ll mid)
{ll len=s.size()-1;ll num=0;ll id=len;//记录每一个字母遍历 最终停留的位置 开始初始化为len 方便最开始相减为0for(int i=1;i<t.size();i++){ll x=t[i]-'a'+1;if(cnt[x][len]==0) return false;//代表t中某个字符在s中从来没有出现过 不可能会有结果 返回falsell ans=mid-(cnt[x][len]-cnt[x][id]);//这说明当前的字符串就够了 不需要在开一条if(ans<0){//为了找此时满足条件应该到谁了ans=mid+cnt[x][id];if(ans>0) id=v[x][ans-1];//因为vector的下标是从0开始的continue;}ll num1=ans/cnt[x][len];ll num2=ans%cnt[x][len];num+=num1;if(num2!=0){num++;//更新当前id的位置id=v[x][num2-1];}//yy=v[x].size()共有几个 v[x]中存的下标就是与之对应的第几个 最后一个就是与之相对应的下标yy-1else id=v[x][v[x].size()-1];if(num>n) return false;}return true;
}
int main()
{cin>>n;cin>>s>>t;s=' '+s;t=' '+t;for(int i=1;i<s.size();i++){int num=s[i]-'a'+1;v[num].push_back(i);for(int j=1;j<=26;j++){cnt[j][i]=cnt[j][i-1];if(j==num) cnt[j][i]=cnt[j][i-1]+1;}}ll l=0,r=1e18;//找最小值的最大化while(l<r){ll mid=(l+r+1)>>1;if(check(mid)) l=mid;else r=mid-1;}cout<<l<<endl;return 0;}

相关文章:

AtCoder Beginner Contest 346

D - Gomamayo Sequence 状态DP 题意&#xff1a;给定一个长度为n的01字符串&#xff0c;使得只存在一组s[i]s[i1] 其余都是不同的&#xff0c;若使0改变为1 会花相应的费用 a[i] 求最小值 思路&#xff1a;数据为2e5数据太大&#xff0c;贪心不可以想到dp--状态dp 构造01串…...

Arduino智能家居

文章目录 一、接线框图1、下载fritzing 二、Arduino IDE 下载三、实现代码 一、接线框图 1、下载fritzing https://github.com/fritzing/fritzing-app/releases打开的软件界面如下&#xff1a; 二、Arduino IDE 下载 官网地址 P.S. 如果upload代码过程中出现cant open de…...

吴恩达2022机器学习专项课程(一) 3.3 成本函数的公式

问题预览 模型的参数&#xff08;w和b&#xff09;有什么作用&#xff1f;不同的w和b对线性回归模型有什么影响&#xff1f;训练集里的y和线性回归模型预测的y&#xff08;y帽&#xff09;的区别是什么&#xff1f;成本函数的作用是什么&#xff1f;成本函数的公式是什么&…...

Day56-LNMP架构扩展为集群模式实战精讲

Day56-LNMP架构扩展为集群模式实战精讲 1. 企业级标准部署知乎产品wecenter1.1 部署知乎软件Wecenter 2. 企业级迁移数据库到独立服务器2.1 为什么要进行数据库的拆分2.2 数据库拆分架构演变过程&#xff0c;如下图所示2.3 数据库拆分环境规划2.4 数据库拆分架构详细步骤2.4 we…...

Windows 设置多显示器显示

Windows 设置多显示器显示 1. Windows 7 设置 HDMI 输出2. Windows 11 设置多显示器显示References 1. Windows 7 设置 HDMI 输出 2. Windows 11 设置多显示器显示 ​​​ References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/...

语言模型的原理、实战与评估

语言模型的原理、实战与评估是一个宽泛的话题,下面是对这三个方面简要概述: 语言模型的原理 语言模型(Language Model, LM)是一种统计模型,用于估计一段文本序列的概率分布。它的核心任务是给定一系列词语,计算出这些词语组合成一个完整句子或段落的概率。典型的语言模型…...

【Android 内存优化】Koom核心内存指标分析

文章目录 源码Runtime.getRuntime()/proc/self/status/proc/meminfo 附总结 获取内存的指标有很多&#xff0c;假如我们要写一个用于监控APP内存泄漏的框架的话&#xff0c;主要获取哪些指标呢&#xff1f; 这篇文章来研究下KOOM里面获取到是哪些指标。 下面正文开始&#xff…...

Spring相关框架八股

单例bean是线程安全的吗&#xff1f; AOP 事务失效 Bean生命周期 Bean循环依赖解决 MVC执行流程 自动装配原理 Spring常见注解 SpringMVC注解 SpringBoot注解 MyBatis执行流程 MyBatis延迟加载 MyBatis缓存 SpringCloud五大组件 注册中心Nacos、Eureka 负载均衡Ribbon 服务雪崩…...

RK3588开发笔记-v1.3.0-SDK文件系统分区添加

目录 目录 前言 一、分区文件 二、分区文件初始化 三、板级配置文件修改...

架构评估方法相关知识总结

一、架构评估中的重要概念 定义&#xff1a;软件架构评估是在对架构分析、评估的基础上&#xff0c;对架构策略的选取进行决策。 常用系统架构评估的方式&#xff1a; 1. 基于调查问卷或检查表的方法&#xff1a;该方法的关键是设计好问卷或检查表。缺点是在很大 程度上依赖于评…...

常用ES标准

ES2015&#xff1a; 1.块级作用域const、let const声明对象可修改属性&#xff0c;但不能重新赋值对象。 2.解构赋值 const arr [a1, a2, a3]; const [a1, ...rest] arr; // rest [a2, a3];3.模板字符串 const date "星期一"; console.log(今天是${date};);4…...

Http中Host,Referer,Origin和Access-Control-Allow-Origin

Http中Host&#xff0c;Referer&#xff0c;Origin和Access-Control-Allow-Origin 文章目录 Http中Host&#xff0c;Referer&#xff0c;Origin和Access-Control-Allow-OriginHost定义特性作用 Referer定义特性作用 Origin定义特性作用 Access-Control-Allow-Origin定义特性作用…...

UDP实现聊天室

现象&#xff1a; 源码&#xff1a; 服务器&#xff1a; #include<myhead.h>struct sockaddr_in serveraddr,caddr; enum type_t//枚举 {Login,Chat,Quit, }; typedef struct MSG {char type;//L C Qchar name[32];//char text[128];// }msg_t;typedef struct NODE//链…...

排序算法:如冒泡排序、插入排序、选择排序、快速排序、归并排序

冒泡排序&#xff08;Bubble Sort&#xff09;&#xff1a;冒泡排序是一种简单的排序算法。它通过反复交换相邻的元素&#xff0c;将最大的元素逐步“浮”到数组的末尾。基本思想是每次比较相邻的两个元素&#xff0c;如果顺序不对就进行交换&#xff0c;直到整个数组有序。时间…...

深度学习pytorch——GPU加速(持续更新)

使用 .to(device)&#xff0c;以前使用 .cuda() &#xff0c;但是现在基本不使用了。 代码示例&#xff1a; 查看电脑GPU运行情况&#xff1a; 使用Ctrl Shift ESC快捷键&#xff1a;...

StringRedisTemplate

Redis快速入门 3.2.3.StringRedisTemplate 为了节省内存空间&#xff0c;我们可以不使用JSON序列化器来处理value&#xff0c;而是统一使用String序列化器&#xff0c;要求只能存储String类型的key和value。当需要存储Java对象时&#xff0c;手动完成对象的序列化和反序列化。…...

Linux cp、mv命令显示进度条

1.advcpmv 平常使用cp 拷贝大文件时&#xff0c;看不到多久可以完成&#xff0c;虽然加上-v参数也只能看到正在拷贝文件&#xff0c;那就使用以下方法实现 git clone https://github.com/jarun/advcpmv.git cd advcpmv/ bash install.shmv ./advcp /usr/local/bin/ mv ./advmv …...

在Java中使用Apache POI保留Excel样式合并多个工作簿

背景 在日常工作中&#xff0c;我们经常需要将多个Excel文件合并成一个&#xff0c;同时保留原有的样式和格式。Apache POI是一个流行的Java库&#xff0c;用于读取和写入Microsoft Office格式的文件&#xff0c;包括Excel。然而&#xff0c;仅仅使用Apache POI的基本功能进行…...

Nomachine远程黑屏通用处理方法

Nomachine远程黑屏通用处理方法 文章目录 前言正文解决步骤 总结 前言 NoMachine是一种远程桌面软件&#xff0c;它允许用户通过互联网或局域网连接到远程计算机&#xff0c;并在本地计算机上使用远程计算机的桌面环境和应用程序。它提供了高性能的图形渲染和低延迟的响应&…...

基于51单片机数控直流电压源proteus仿真LCD显示+程序+设计报告+讲解视频

基于51单片机数控直流电压源proteus仿真LCD显示( proteus仿真程序设计报告讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0072 讲解视频 基于51单片机数控直流电压源proteus仿真程序…...

量子计算中Loschmidt回声相位测量的创新方法

1. 量子计算中的Loschmidt回声相位测量方法概述Loschmidt回声是量子动力学中一个重要的概念&#xff0c;它描述了量子系统在时间反演演化后与初始状态的相似程度。在量子计算领域&#xff0c;精确测量Loschmidt回声的相位信息对于理解量子系统的非平衡态行为、计算能量本征值以…...

AI写的论文双率如何压到20%以下?这几款工具实测有效

毕业季、投稿季用AI写论文已经成为不少人的高效选择&#xff0c;但查重率飘红、AIGC疑似率超标两大问题&#xff0c;让很多人犯了难。2026年学术检测标准持续收紧&#xff0c;知网、维普及主流AIGC检测系统同步上线双检规则&#xff0c;两项指标均控制在20%以下才符合基本提交要…...

2027考研全套资料免费分享

备战27考研最全备考资料整理完毕&#xff0c;一路走来深知备考搜集资料耗费大量时间&#xff0c;浪费不少精力。特意整理2027考研全科完整版资源&#xff0c;全部打包汇总&#xff0c;零基础考生直接拿来就能使用&#xff0c;省去四处搜集资料的烦恼。资料内含&#xff1a;&…...

如何在浏览器中一键解密所有加密音乐文件:Unlock-Music完全指南

如何在浏览器中一键解密所有加密音乐文件&#xff1a;Unlock-Music完全指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地…...

DIY四路自动音频源切换器:从信号检测到继电器隔离的完整设计

1. 项目概述与核心需求解析作为一个喜欢在工作室里捣鼓各种音频设备的玩家&#xff0c;我经常遇到一个挺烦人的问题&#xff1a;我的功放只有一组输入&#xff0c;但我想接的设备却有好几个——台式电脑、平板、蓝牙接收模块&#xff0c;还有一台树莓派。每次想切换音源&#x…...

AI算法工程师如何进行模型部署?这2个工具+3个技巧,快速上线

对于软件测试从业者来说&#xff0c;模型部署并不是一个陌生的概念——随着AI功能逐渐渗透到各类应用软件中&#xff0c;测试工程师不仅需要验证模型输出的准确性&#xff0c;更需要理解部署流程对模型稳定性、响应速度和结果一致性的影响。很多测试同学会有这样的困惑&#xf…...

从API调用成功率看Taotoken服务的稳定性与容灾表现

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 从API调用成功率看Taotoken服务的稳定性与容灾表现 在将大模型能力集成到自动化流程或日常开发工具链时&#xff0c;服务的稳定性和…...

OpenClaw 源码解析(六):openclaw agent 如何触发一次 Agent 运行?

1. 本期要解决的问题 前几期我们已经从项目整体结构、CLI 命令体系、配置加载、Gateway 运行机制等角度理解了 OpenClaw 的基础框架。到了这一期&#xff0c;可以进一步进入 OpenClaw 最核心的使用动作&#xff1a;用户在终端中执行一条 openclaw agent --message "...&q…...

JavaScript语言精粹第三章解读 | 吃透JS对象核心!告别90%日常开发对象Bug

前言 最近重读《JavaScript语言精粹》&#xff0c;复盘JS对象基础的时候&#xff0c;我真的发现了自己多年的编码陋习。 写了好几年前端&#xff0c;每天都在和对象打交道&#xff1a;接口回参解析、页面状态存储、配置项封装&#xff0c;全是{}&#xff0c;看似简单到不值一…...

Redis Bitmap的隐藏用法:从“优惠券防超领”到“大数据去重”的实战避坑指南

Redis Bitmap的隐藏用法&#xff1a;从“优惠券防超领”到“大数据去重”的实战避坑指南 在数据密集型的现代应用中&#xff0c;如何高效处理海量数据的唯一性校验和状态标记&#xff0c;一直是开发者面临的挑战。Redis的Bitmap数据结构以其极低的内存消耗和O(1)时间复杂度的位…...