蓝桥杯算法日记|贪心、双指针

devtools/2025/2/13 14:35:59/

3412 545 2928 2128

贪心学习总结:

1、一般经常用到sort(a,a+n);【a[n]】排序,可以给整数排,也可以给字符串按照字典序排序

2、每次选最优

 双指针

有序数组、字符串、二分查找、数字之和、反转字符串、回文数、颠倒二进制

对撞指针

一个是最左边,另一个是最右边,条件l<=r

回文#include <bits/stdc++.h>
using namespace std;
int main()
{// 请在此输入您的代码string s;cin>>s;int n=s.size();int l=0,r=n-1;while(l<=r){if(s[l]!=s[r]){cout<<"N"<<'\n';exit(0);}l++;r--;}cout<<"Y"<<'\n';return 0;
}

快慢指针

同一侧开始遍历序列,且一动的步长一个快一个慢【l,r】,两指针一不同的速度、不同策略移动,直到快指针移动到数组尾端、或者两指针相交,或者其他条件为止。

快指针移动策略,慢指针移动策略

for(慢指针移动策略){

while(快指针移动策略)

if{题目条件}结果;

其他补充;

}

#include <bits/stdc++.h>
using namespace std;
int main()
//{
//  // 请在此输入您的代码
//  int n,s;cin>>n>>s;
//  int a[n];
//  for(int i=0;i<n;i++){cin>>a[i];}
//  //输出美丽区间和》s并且越短越美丽
//  //区间问题,想到了前缀和
//  int sum[n];sum[0]=a[0];
//  for(int i=1;i<n;i++){
//    sum[i]=sum[i-1]+a[i];
//  }
//  for(int i=0;i<n;i++){
//    for(int j=i+1;j<n;j++){
//      if(i=0){if(sum[j]>s){cout<<j-i-1<<'\n';exit(0);}}
//      else{if(sum[j]-sum[i]>s){cout<<j-i-1<<'\n';exit(0);}}
//    }
//  }
//  return 0;
//}
//正确率对一个 ,最短的不一定先出现 
{
//随时更新最短长度 int n,s;cin>>n>>s;int a[n];for(int i=1;i<=n;i++){cin>>a[i];}int ans=n+1;for(int i=1,j=0,sum=0;i<=n;i++){//区间变大  while(j<i||(j<n&&sum<s)){sum=sum+a[++j];cout<<sum<<" ";} if(sum>=s)ans=min(ans,j-i+1);sum=sum-a[i];cout<<sum<<'\n'; //收缩左边界,保证i+1后,sum } cout<<ans<<'\n';return 0;
} 
#include <iostream>
using namespace std;
int main()
{// 请在此输入您的代码int n,m,k;cin>>n>>m>>k;int a[n];for(int i=1;i<=n;i++){cin>>a[i];}int sum=0,res=0;for(int i=1,r=0;i<=n;i++){//不满足条件,则移动快指针while(r<i||(sum<k&&r+1<=n)){sum=sum+(a[++r]>=m);}//满足条件if(sum>=k)res=res+1+n-r;sum=sum-(a[i]>=m);}cout<<res<<'\n';
//错误代码:// for(int i=1;i<=n;i++){//   for(int j=i;j<=n;j++){//     //至少有k个数是大于等于m//     if(a[j]>=m)sum++;//     if(sum=k){res=1+n-j;break;}//   }// }// cout<<res<<'\n';return 0;
}

今日打卡:

2.10
挑选字符串

https://www.lanqiao.cn/problems/1621/learning/
美丽的区间
https://www.lanqiao.cn/problems/1372/learning/
回文判定
https://www.lanqiao.cn/problems/1371/learning/


http://www.ppmy.cn/devtools/158503.html

相关文章

996引擎-问题处理:三职业改单职业

996引擎-问题处理:三职业改单职业 问题解决方案顺便补充点单性别设置补充:可视化配置表参考资料问题 目前的版本: 引擎版本号:2024.8.7.0 三端配套客户端:3.40.9 传统PC客户端:23.12.07 配套数据库:64_24.8.7.0此版本需要通过可视化配置表

网络安全 | SNI介绍及F5中的配置应用

关注&#xff1a;CodingTechWork SNI介绍 SNI&#xff08;Server Name Indication&#xff09;是 TLS/SSL 协议中的一个重要扩展&#xff0c;旨在解决同一 IP 地址上托管多个网站时&#xff0c;如何选择正确的 SSL/TLS 证书进行加密通信的问题。SNI 通过在 TLS 握手初期传递客…

协议-LVDS

是什么&#xff1f; LVDS 全称为 Low-Voltage Differential Signaling&#xff0c;低电压差分信号 低功耗、低误码率、低串扰和低辐射的差分信号&#xff0c;采用-350mV~350mV极底的电压摆幅高速差动传输数据&#xff0c;实现点对点或一点对多点的连接 由于电压幅度低&#xf…

多智能体开发相关内容汇总

多智能体开发相关内容汇总 1. 多智能体开发 定义: 多智能体开发是指创建和管理多个独立但又能协同工作的AI实体&#xff0c;这些实体能够互相通信、协调动作&#xff0c;共同完成复杂的任务。 优势: 分布式计算: 各智能体负责不同的子任务&#xff0c;提高了系统的处理能力…

51单片机之引脚图(详解)

8051单片机引脚分类与功能笔记 1. 电源引脚 VCC&#xff08;第40脚&#xff09;&#xff1a;接入5V电源&#xff0c;为单片机提供工作电压。GND&#xff08;第20脚&#xff09;&#xff1a;接地端&#xff0c;确保电路的电位参考点。 2.时钟引脚 XTAL1&#xff08;第19脚&a…

实现限制同一个账号最多只能在3个客户端(有电脑、手机等)登录(附关键源码)

如上图&#xff0c;我的百度网盘已登录设备列表&#xff0c;有一个手机&#xff0c;2个windows客户端。手机设备有型号、最后登录时间、IP等。windows客户端信息有最后登录时间、操作系统类型、IP地址等。这些具体是如何实现的&#xff1f;下面分别给出android APP中采集手机信…

初阶数据结构:树---二叉树的链式结构

目录 一、二叉树的链式结构 &#xff08;一&#xff09;、概念 二、二叉树链式结构的实现 &#xff08;一&#xff09;、二叉树链式结构的遍历 1、前序遍历 2、中序遍历 3、后序遍历 4、层序遍历 &#xff08;二&#xff09;、二叉树的构建 &#xff08;三&#xff0…

如何利用DeepSeek结合深度学习与NLP技术,实现跨模态搜索的语义理解与个性化推荐

随着信息的快速增长&#xff0c;传统的搜索引擎已逐渐无法满足用户对于精准与个性化搜索的需求。跨模态搜索作为一种新的技术趋势&#xff0c;通过结合不同模态&#xff08;如文本、图像、视频等&#xff09;来增强搜索的准确性和多样性&#xff0c;已经成为科技领域的重要研究…