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

server/2025/2/13 23:32:20/

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/server/167457.html

相关文章

Docker与容器交互——attach和exec

阅读《Docker 从入门到实践》时&#xff0c;读到“进入容器”这一章节&#xff0c;有两个主要 的命令&#xff0c;分别是&#xff1a; docker attach docker exec 其中提到一句话&#xff1a; 注意&#xff1a; 如果从这个 stdin 中 exit&#xff0c;会导致容器的停止。 …

[MFC] 使用控件

介绍如何使用控件&#xff0c;以及如何获取控件中的数值 check Box 添加点击事件&#xff0c;即选中和取消选中触发的事件 第一种方式是按照如下方式第二种方式是直接双击点击进去 void CMFCApplication1Dlg::OnBnClickedCheckSun() {// TODO: 在此添加控件通知处理程序代…

蓝桥杯备考:贪心算法简介

贪心算法就是企图用局部最优的策略找出全局最优步骤就是1&#xff0c;把解决问题的过程分成若干步。2&#xff0c;每一步都选择当前看起来最优的解法 。 3&#xff0c;希望得到全局最优的结果 比较经典的例题一个就是 找零问题 钞票种类[20,10,5,1]用最小的张数找零46的时候…

Android10 音频参数导出合并

A10 设备录音时底噪过大&#xff0c;让音频同事校准了下&#xff0c;然后把校准好的参数需要导出来&#xff0c;集成到项目中&#xff0c;然后出包&#xff0c;导出方式在此记录 设备安装debug系统版本调试好后&#xff0c; adb root adb remount adb shell 进入设备目录 导…

HTML 链接

HTML 链接 引言 HTML&#xff08;超文本标记语言&#xff09;是构建网页的基础&#xff0c;而链接是网页中不可或缺的元素。链接不仅能够连接到其他网页&#xff0c;还能实现网页内部内容的跳转。本文将详细介绍HTML链接的用法、属性以及如何实现链接的优化。 HTML链接的基本…

win11+mac键盘+PowerToys 重映射热键

在win11系统中&#xff0c;使用mac的蓝牙键盘&#xff0c;键盘本身没有PrintScreen键。这时可以借助PowerToys来将其他键映射到系统的PrintScreen. 1.下载安装PowerToys 地址https://learn.microsoft.com/zh-cn/windows/powertoys/ 2.打开PowerToys&#xff0c;选中【键盘管理器…

解决 Sentinel 控制台无法显示 OpenFeign 资源的问题

前言 在使用 Spring Cloud Alibaba Sentinel 进行微服务治理时&#xff0c;可能会遇到 Sentinel 控制台无法显示 OpenFeign 资源的问题。本文将详细分析问题的原因&#xff0c;并提供解决方案。 一、问题描述 在 Sentinel 控制台 1.8.8 版本中&#xff0c;簇点链路&#xff…

【github】docker realtime

Linux和Docker实时指南&#xff0c;适用于Ubuntu实时内核和PREEMPT_RT ReadMe.md 作者&#xff1a;Tobit Flatscher&#xff08;2021 - 2024&#xff09; 概述 本指南解释了如何在Linux操作系统内开发/部署运行实时代码的Docker容器。因此&#xff0c;它会带你了解&#xf…