细节/数学/滑动窗口

 题目意思:

判断字符串是否可以按照题目条件缩短。

思路:

用栈的思想写,对每一次的大小写都进行滚动判断。

tips:

这里面要注意的东西就有一点多了,首先是字符串的遍历问题auto更方便,其次是对小写和大写字母的判断,可以说字符串大部分的细节这道题目都有涉及。

#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve(){int n;cin>>n;string ac;cin>>ac;stack<char>p;for(auto it:ac){if(!p.empty()){//这里是判断是否为空,但是容易写成whilechar top=p.top();//找出顶端的字母if(it>top&&islower(top)&& islower(it)&&(it-'a'+1+top-'a'+1==27)){//小写的情况下,两者都要是小写的,而且满足一定的条件,后大于前且两者相加为27p.pop();continue;}if(it<top&&isupper(top)&&isupper(it)&&(it-'A'+1+top-'A'+1==27)){//大写的情况下,两者都要是大写的,而且满足一定的条件,前大于后且两者相加为27p.pop();continue;}}p.push(it);}cout<<p.size()<<endl;
}
signed main(){int n=1;while(n--){solve();}
}

题目意思:

给定一些数字,判断这些数字是否能用其他平方数字通过迭代的方式得到。

思路:

平方数字有4,9,16,25....但是我们这里只需要取4,9即可,因为大于9的平方数字我们都可以通过较小的平方数字得到。故有意义的平方数字只有4,9。

拿4举例子

1,4,7,...3k+1

拿9举例子

1,9,17,...8k+1

拿25举例子

1,24,47,...23k+1

之后由于题目中可以反复取相同或者不相同的平方数字进行若干次操作,我们可以对上述数字进行通解写法,3a+1+23b+8c+...(其他平方数字),但是我们要找到这一串通解表达最小的数字是多少。

麦乐鸡定理  

我们可以根据上数定理找到最小可表达的数字,这里我们用3a+8b+1得到14。

故大于14的数字该表达式都可以表达。

我们只需要在14内部进行特判即可。(手动模拟一下)

#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve(){int x;cin>>x;if(x==2||x==3||x==5||x==6||x==8||x==11||x==14){cout<<"No"<<endl;}else{cout<<"Yes"<<endl;}
}
signed main(){int n=1;cin>>n;while(n--){solve();}
}

题目意思:

给定一个数组和若干次给每个数字加一的操作下,找到长度为m的字串且奇偶交替的最小次数。

思路:滑动窗口想法,对于每一个长度为m的字串进行判断找最小,从头到尾遍历一遍。

奇偶交替的情况可以是奇偶奇偶奇偶也可以是偶奇偶奇偶奇,说到底是数组下标和数字之间的关系。故我们可以将奇数标记为1,偶数标记为0,进行状压转移。

最后按照两种情况分别求个前缀和(如果数字的奇偶性和当下交替情况不符合,我们就直接操作加1)

#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve() {int n, m;cin >> n >> m;vector<int> a(n);for (int i = 0; i < n; i++) {cin >> a[i];  // 输入数组a}// 定义两个数组aa和bb,分别表示将a[i]调整为以奇数开头和偶数开头的奇偶交替序列所需的操作次数vector<int> aa(n), bb(n);for (int i = 0; i < n; i++) {// aa[i]: 如果a[i]的奇偶性与i的奇偶性不一致,则需要调整(操作次数为1),否则为0aa[i] = (a[i] % 2 != i % 2) ? 1 : 0;// bb[i]: 如果a[i]的奇偶性与i的奇偶性相反(即i是偶数时a[i]是奇数,i是奇数时a[i]是偶数),则需要调整(操作次数为1),否则为0bb[i] = (a[i] % 2 != !(i % 2)) ? 1 : 0;}// 前缀和数组,用于快速计算区间和vector<int> qian(n + 1, 0), hou(n + 1, 0);for (int i = 0; i < n; i++) {qian[i + 1] = qian[i] + aa[i];  // qian[i+1]表示前i个元素中aa的和hou[i + 1] = hou[i] + bb[i];    // hou[i+1]表示前i个元素中bb的和}int answer = 8e18;  // 初始化为一个很大的数,表示无穷大// 滑动窗口,遍历所有长度为m的子数组for (int i = 0; i + m <= n; i++) {// 计算当前窗口内aa的和(即调整为以奇数开头的奇偶交替序列的操作次数)int sum = qian[i + m] - qian[i];// 计算当前窗口内bb的和(即调整为以偶数开头的奇偶交替序列的操作次数)int cnt = hou[i + m] - hou[i];// 更新最小操作次数answer = min({answer, sum, cnt});}cout << answer << endl;
}signed main() {int t = 1;while (t--) {solve();}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85683.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebeServer实现:学到了哪些东西

前言 这里话就是总结一下之前没讲过的一些东西 系统调用 accept与accept4   当我们调用accept接收一个新的fd的时候&#xff0c;往往需要在调用fcntl将这个fd变成非阻塞IO,那么有没有一个系统调用可以一次性做完这两件事呢&#xff0c;有的有的就是accept4. // accept 函数…

React 虚拟dom

JSX创建出ReactElement对象 最终形成一个JS树 将React.createElement对象转为真实DOM的方法使用render函数 为什么要虚拟 dom 状态难以跟踪 ## 操作真实dom开销大 &#xff0c;并且操作会引起频繁的回流和重绘&#xff0c;并且不涉及批处理 声明式编程 从虚拟dom向真实dom去…

Spring MVC异常处理机制

Spring MVC提供了多种异常处理机制,以下是核心处理方式及实现方法: 一、局部异常处理(Controller级别) @ExceptionHandler注解 在Controller内部定义异常处理方法,捕获当前控制器抛出的指定异常。@Controller public class UserController {@GetMapping("/test"…

MySQL 8.x配置MGR高可用+ProxySQL读写分离(一):MGR构建MySQL高可用

#作者&#xff1a;stackofumbrella 文章目录 简介MGR优点MGR缺点MGR适用场景单主模式和多主模式组复制介绍组复制插件架构图单主模式多主模式配置主机名解析安装MGR插件 MGR故障转移恢复MGR集群 简介 MGR&#xff08;MySQL Group Replication&#xff09;是MySQL 5.7.17版本诞…

保安员证考试的理论知识部分,重点考查的法律法规具体有哪些?

保安员证考试理论知识部分&#xff0c;重点考查的法律法规主要有以下几种&#xff1a; 《保安服务管理条例》&#xff1a;作为保安行业的专门法规&#xff0c;是考试核心。重点考查保安服务活动规范&#xff0c;如保安服务的范围、资质要求等&#xff1b;保安员的权利与义务&am…

【好用但慎用】Windows 系统中将所有 WSL 发行版从 C 盘迁移到 非系统 盘的完整笔记(附 异常处理)

&#x1f680; 将所有 WSL 发行版从 C 盘迁移到 I 盘的完整教程&#xff08;含 Podman / NVIDIA Workbench / Ubuntu 等&#xff09; 【无标题】使用 Chocolatey 安装 WSL 管理工具 LxRunOffline-CSDN博客 免责声明 重要提示 在执行 WSL 迁移操作前&#xff0c;请务必仔细阅读…

Oracle APEX 通过rtf模板下载PDF文件(BIP)

1. 上传模板文件 共享组件 > 报表布局 2. 编写SQL文 共享组件 > 报表查询 报表布局中选择1中设置完的报表布局&#xff0c;然后编写SQL文提供数据 3. 添加下载按钮 在页中添加一个下载按钮&#xff0c;添加动态操作&#xff0c;选择打印报告 4. 下载PDF文件 点击Pri…

Web Seach 搜索 MCP 启动!

&#x1f680; 开启你的 AI 助手搜索能力&#xff01;开源 Web 搜索 MCP 服务器上线&#xff01; 在 ChatGPT、Claude 等 AI 工具成为生产力新核心的今天&#xff0c;我们往往面临一个尴尬的问题&#xff1a;模型不知道最新的网络信息。虽然 GPT-4o 和 Claude 支持联网功能&am…

005微信小程序npm包_全局数据共享和分包

npm包_全局数据共享和分包 1. 使用npm包1.1 Vant Weapp1.2 API Promise化 2. 全局数据共享3. 分包3.1 分包的加载规则3.2 分包的体积限制3.3 使用分包3.3 独立分包3.4 分包预下载 1. 使用npm包 小程序对npm进行了支持与限制&#xff0c;限制如下&#xff1a; 不支持依赖于 No…

DPO直接偏好函数的学习解读

DPO, Direct Preference Optimization&#xff0c;采用直接优化策略满足人类偏好&#xff0c;使得LLM对于给定输入&#xff0c;生成能用输出的概率高于生成不能用输出的概率。 1&#xff09;DPO优化目标 在DPO训练过程中&#xff0c;模型通过最大化可用回答相对于不可用回答的…

【开源初探】基于 Qwen2.5VL的文档解析工具:docext

源码地址&#xff1a; https://github.com/NanoNets/docext 概述 docext 是一个由视觉语言模型&#xff08;vlm&#xff09;提供支持的全面的本地文档智能工具包。vlm 使用的是基于 Qwen2.5VL-3B 的模型&#xff0c;应该是在此模型基础上进行的微调。 它提供了三个核心功能&…

Python 正确重载运算符(增量赋值运算符)

增量赋值运算符 Vector 类已经支持增量赋值运算符 和 * 了&#xff0c;如示例 13-15 所示。 示例 13-15 增量赋值不会修改不可变目标&#xff0c;而是新建实例&#xff0c;然后 重新绑定 >>> v1 Vector([1, 2, 3]) >>> v1_alias v1 # ➊ >>> …

XCUITest + Objective-C 详细示例

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】

redis分布式锁 Redisson在电商平台开发中的实际应用

目录 概述 Redis分布式锁的实现方式 1. 基于SETNX命令&#xff08;String类型&#xff09; 2. 使用SET命令的NX和EX参数&#xff08;推荐方式&#xff09; 3. 基于Lua脚本实现复杂逻辑 4. RedLock算法&#xff08;多节点Redis实现&#xff09; Redisson的分布式锁 Redis…

joomla 使用nginx服务器只能打开首页,其他页面404的解决方案

最近一个客户将Joomla4网站从原先的Apache服务器改为Nginx服务器&#xff0c;整个过程一切顺利&#xff0c;但还原网站后发现只能打开首页&#xff0c;其他页面都是404。这个问题需要修改nginx的配置文件来解决。 伪静态 在Apache中使用.htaccess来完成伪静态路由的转发&…

湖北理元理律师事务所企业债务纾困路径:司法重整中的再生之道

中小企业债务危机常呈现“担保链扩散”特征&#xff0c;单一债务可能引发企业崩盘。湖北理元理律师事务所通过预重整制度与企业债务重组技术&#xff0c;探索出“司法保护商业谈判”的纾困模式。 一、企业债务风险处置四步法 紧急止血 申请司法保护&#xff1a;通过诉前调解…

利用DeepWiki高效阅读项目源码

想获取更多高质量的Java技术文章&#xff1f;欢迎访问Java技术小馆官网&#xff0c;持续更新优质内容&#xff0c;助力技术成长 技术小馆官网 DeepWiki 是一个强大的工具&#xff0c;专为程序员提供开源项目源码的结构化文档和 AI 驱动的问答功能&#xff0c;帮助快速理解复杂…

django rest_framework 前端网页实现Token认证

rest_framework提供了几种认证方式&#xff1a;Session、Token等。Session是最简单的&#xff0c;几乎不用写任何代码就可以是实现&#xff0c;Token方式其实也不复杂&#xff0c;网上的教程一大把&#xff0c;但是最后都是用Postman这类工具来实现API调用的&#xff0c;通过这…

面试题-函数类型的重载是啥意思

在 TypeScript 中&#xff0c;函数重载&#xff08;Function Overload&#xff09; 是指为同一个函数提供多个不同的调用签名&#xff08;参数类型和返回值类型的组合&#xff09;&#xff0c;但函数体只有一个实现。这样可以让函数在不同的输入下表现出不同的行为&#xff0c;…

磐基PaaS平台MongoDB组件SSPL许可证风险与合规性分析(上)

#作者&#xff1a;任少近 文章目录 1.背景与问题1.1.背景1.2.问题 3.SSPL条款解读分析3.1.条款0&#xff1a;定义条款3.2.条款一&#xff1a;源代码条款3.3.条款二&#xff1a;基本授权条款3.4.条款三&#xff1a;反规避保护条款3.5.条款四&#xff1a;逐字传播条款3.6.条款五…