蓝桥杯 前一晚总结 模板 新手版

《准备实足,冲冲冲 省一》icon-default.png?t=N7T8https://www.yuque.com/lenyan-svokd/hi7hp2/hfka297matrtsxy2?singleDoc# 《准备实足,冲冲冲 省一》

#include<bits/stdc++.h> // 包含标准库头文件

using namespace std;
using ll = long long; // 定义 long long 数据类型的别名

int main() {
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); // 优化输入输出操作

    return 0; // 返回 0 表示成功执行
}

bool check() {} // 声明一个名为 "check" 的函数,返回布尔值

// 二分搜索函数,用于找到条件的第一次出现
int erf1(int l,int r) {
    while(l<r) {
        int mid = l+r>>1; // 计算中间索引
        if(check(mid)) r = mid; // 调整右边界
        else l = mid+1; // 调整左边界
    }
    return l; // 返回索引
}

// 二分搜索函数,用于找到条件的最后一次出现
int erf2(int l ,int r) {
    while(l<r) {
        int mid = l+r+1>>1; // 计算中间索引
        if(check(mid))l = mid; // 调整左边界
        else r = mid - 1; // 调整右边界
    }
    return l; // 返回索引
}

// 在数组的范围内增减元素
s[l]+=c; s[r+1]-=c;

// 在二维数组的矩形范围内增减元素
s[x1][y1]+=c;s[x2+1][y1]-=c;s[x1][y2+1]-=c;s[x2+1][y2+1] +=c;

// 计算二维数组的前缀和
s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];

// 循环遍历一个范围,同时满足条件
for(int i = 0,j = 0;i<n;i++) {
    while(j<i&&check(i,j)) j++; // 增加 j 直到条件满足
}

// 表示四个方向移动的数组
int nxy[4][2] = {0,1,0,-1,1,0,-1,0};

// 深度优先搜索函数
void dfs(int x,int y) {
    if(x<1||x>n||y<1||y>m||map[x][y] == 0||vis[x][y] ==1) 
        return; // 如果条件不满足,则退出
    vis[x][y] = 1; // 标记为已访问的单元格
    sum+=map1[x][y]; // 添加值到总和
    for(int i = 0;i<4;i++) { // 遍历所有四个方向
        int nx = x+nxy[i][0]; // 计算新的 x 坐标
        int ny = y+nxy[i][1]; // 计算新的 y 坐标
        dfs(nx,ny); // 递归调用以探索相邻单元格
        if(nx<1||nx>n||ny<1||ny>m||map[nx][ny] == 0||vis[nx][ny] ==1) continue; // 如果条件不满足,则跳过
    }
}

int main() {
    cin>>n>>m; // 输入网格的维度
    for(int i = 1;i <=n;i++) {
        for(int j = 1; j <=m ;j++) {
            cin>>map1[i][j]; // 输入网格的值
        }
    }
    
    for(int i = 1;i <=n;i++) {
        for(int j = 1; j <=m ;j++) {
            if(map1[i][j]!=0) { // 检查单元格是否不为空
                sum=0; // 重置总和
                dfs(i,j); // 调用 DFS 函数以探索连接的组件
            }
            ans = ans > sum ? ans:sum; // 更新答案
        }
    }
    cout<<ans<<endl; // 输出答案
    return 0; // 返回 0 表示成功执行
}

// 结构体定义,表示树节点
struct tree {
    int l,r; // 节点的左右边界
};

tree a[N]; // 树节点数组

// 输入树节点
cin>>n;
for(int i = 1; i<=n;i++) {
    cin>>w[i]; // 输入节点权重
}
for(int i = 1;i<=n;i++) {
    cin>>a[i].l>>a[i].r; // 输入节点边界
}

int map1[N][N]; // 二维数组,用于存储地图信息
bool vis[N][N]; // 二维数组,用于记录访问状态
int ans,x1,x2,y1,y2; // 变量声明
int nxy[4][2] = {0,1,1,0,0,-1,-1,0}; // 表示四个方向移动的数组
int n,m; // 变量声明

// 结构体定义,表示节点信息
struct node {
    int x,y,step; // 节点的坐标和步数
};

queue<node> q; // 队列,用于广度优先搜索

// 广度优先搜索函数
int bfs() {
    while(q.size()) // 当队列不为空时
    {
        node temp = q.front(); // 取出队列的头部节点
        q.pop(); // 弹出队列的头部节点
        int x = temp.x; // 获取节点的 x 坐标
        int y = temp.y; // 获取节点的 y 坐标
        int step = temp.step; // 获取节点的步数
        
        if(x==x2&&y==y2) return step; // 如果到达目标节点,则返回步数
        
        for(int i = 0; i < 4; i++) { // 遍历所有四个方向
            int nx = x + nxy[i][0]; // 计算新的 x 坐标
            int ny = y + nxy[i][1]; // 计算新的 y 坐标
            
            if(nx<1||nx>n||ny<1||ny>m||vis[nx][ny]|| map1[nx][ny]=="  ") // 如果条件不满足,则跳过
            {
                continue;	
            }
            vis[nx][ny] = 1; // 标记节点为已访问
            q.push({nx,ny,step+1}); // 将新节点加入队列,并增加步数
        }
    }
    return -1; // 返回 -1 表示未找到路径
}

// 初始化
node a;
a.x= a.y = a.step=;
vis[x1][y1] =  1;
q.push(a);

cout<<bfs()<<endl; // 输出最短路径长度

// 判断是否为质数
bool zhishu(int x) {
    if(x<2) return false; // 小于 2 的数不是质数
    for(int i = 2; i<=x/i; i++) {
        if(x%i==0) return false; // 如果能被整除,则不是质数
    }
    return true; // 其他情况为质数
}

// 求小于等于 n 的所有质数
void getzhishu(int n) {
    for(int i = 2; i<=n;i++) {
        if(st[i])	continue; // 如果已经被标记为非质数,则跳过
        zhishu[cnt++] = i; // 将质数存储起来
        for(int j = i+i;j<=n;j+=i) {
            st[j] = true; // 将 i 的倍数标记为非质数
        }
    }
}

// 获取一个数的所有约数
vector<int> getyueshu(int x) {
    vector<int> ans; // 存储约数的数组
    for(int i = 1; i<=x/i; i++) {
        if(x%i==0) {
            ans.push_back(i); // 如果能整除,则将约数加入数组
        }
    }
}

// 计算最大公约数
int gcd(int a,int b) {
    return b?gcd(b,a%b):a; // 使用辗转相除法求最大公约数
}

// 计算最小公倍数
int lcm(int a,int b) {
    return a*b/gcd(a,b); // 最小公倍数等于两数之积除以最大公约数
}

getchar(); // 从标准输入流中获取字符
string str; // 声明字符串变量
getline(cin,str); // 从标准输入流中获取一行字符串

// 快速幂算法
ll ksm(ll a,ll b,ll p) {
    ll ans = 1; // 初始化结果为 1
    while(b) { // 当指数大于 0 时
        if(b&1) ans = ans * a % p; // 如果当前位为 1,则更新结果
        a = a * a % p; // 底数平方
        b>>=1; // 右移一位,相当于除以 2
    }
    return ans; // 返回结果
}

//最大递增子序列
    // 读入数组 a,并将数组 b 初始化为与 a 相同的值
    for(int i = 1; i <= n; i++) {
        cin >> a[i]; // 读入数组 a 的第 i 个元素
        b[i] = a[i]; // 将数组 b 的第 i 个元素初始化为数组 a 的第 i 个元素
    }

    // 动态规划计算最大子序列和
    for(int i = 1; i <= n; ++i) {
        for(int j = 1; j <= i; ++j) {
            if(a[i] > a[j]) { // 如果当前元素大于前面的元素
                b[i] = max(b[i], b[j] + a[i]); // 更新当前位置的最大值
            }
        }
    }

    // 找到数组 b 中最大的元素,即为最大子序列和
    ll ans = *max_element(b + 1, b + 1 + n);
    cout << ans << endl; // 输出结果



//最长上升子序列

for(int i=1;i<=n;i++)
{
    f[i]=1
    for(int j=1;j<=i;j++)
    {
        if(a[j]<a[i]) f[i]=max(f[i],f[j]+1);
        ans=max(ans,f[i]);
    }
}


//优化
int len=0;
for(int i=1;i<n;i++)
{
    int pos=lower_bound(f, f+len, a[i]) - f; // 查找大于等于 a[i] 的第一个元素的位置
    len=max(len,pos+1); // 更新最长上升子序列的长度
    f[pos]=a[i]; // 更新序列
}


cout <<len<<endl; // 输出最长上升子序列的长度

// 求最长下降子序列也可以用相同的优化
int len=0;
for(int i=1;i<n;i++)
{
    int pos=upper_bound(f, f+len, a[i], greater<int>()) - f; // 查找大于 a[i] 的第一个元素的位置
    len=max(len,pos+1); // 更新最长下降子序列的长度
    f[pos]=a[i]; // 更新序列
}
cout <<len<<endl; // 输出最长下降子序列的长度



// 最长公共序列模型
int main()
{
    int n,m;
    cin >>n>>m; // 输入两个序列的长度
    for(int i=1;i<=n;i++) cin >>a[i]; // 输入第一个序列
    for(int i=1;i<=m;i++) cin >>b[i]; // 输入第二个序列
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            f[i][j]=max(f[i-1][j],f[i][j-1]); // 更新最长公共子序列长度
            if(a[i]==b[j]) f[i][j]=max(f[i][j],f[i-1][j-1]+1); // 如果当前元素相等,则更新长度
        }
    }
    cout <<f[n][m]<<endl; // 输出最长公共子序列长度
}

// f[i][j]表示所有在a[0...i],b[0....j]中出现过,以b[j]结尾的序列的集合
// 最长公共上升序列模型
int ans=0;
for(int i=1;i<=n;i++)
{
    int temp=1;
    for(int j=1;j<=n;j++)
    {
        f[i][j]=max(f[i-1][j],f[i][j]); // 更新最长公共上升子序列长度
        if(a[i]==b[j]) f[i][j]=max(temp,f[i][j]); // 如果当前元素相等,则更新长度
        if(a[i]>b[j]) temp=max(temp,f[i-1][j]+1); // 如果当前元素大于,则更新长度
    }
}
for(int i=1;i<=n;i++) ans=max(ans,f[n][i]); // 获取最大长度

const int months[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; // 定义每个月的天数数组

// 判断闰年
int run(int year) {
    if(year%4==0 && year%100!=0||year%400==0) return 1; // 满足闰年条件返回 1,否则返回 0
    return 0;
}

// 获取指定月份的天数
int getdays(int y,int m) {
    if(m==2) return 28+run(y); // 如果是二月,则根据是否是闰年返回对应天数
    return months[m]; // 其他情况返回对应月份的天数
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

218基于matlab的有限差分法求解泊松方程

基于matlab的有限差分法求解泊松方程&#xff0c;采用SOR超松弛迭代法。模型采用方形区域&#xff0c;划分网格数为100*100&#xff0c;网格数可以很方便的更改。程序已调通&#xff0c;可直接运行。 218有限差分法 泊松方程 SOR超松弛迭代法 - 小红书 (xiaohongshu.com)

基于React封装Handsontable并兼容antd

背景 其实Handsontable官方也提供了React的版本&#xff0c;但是官方的版本再编辑和渲染的时候并不能够很好的嵌入第三方的组件库。这就导致了&#xff0c;使用了Handsontable就没有办和普通的react项目一样轻松引用其他第三方组件。因此对其react的版本进行了二次的封装&#…

定制个性化的 openEuler 系统镜像:打造独特的安装体验

前言 标准的操作系统镜像可能无法完全满足特定用户群体或特定应用场景的需求。通过定制化&#xff0c;可以根据具体需求预装特定软件、配置特定网络设置&#xff0c;甚至设置特定的用户权限&#xff0c;以确保系统能够满足用户的需求。定制化系统镜像可以优化安装流程&#xf…

PandasAI的应用与实战解析(二):PandasAI使用流程与功能介绍

文章目录 1.使用PandasAI进行开发的流程2.配置文件解析3.支持的数据库类型4.支持的LLMs5.其他 PandasAI这个工具最突出的优点就是通过结合了Pandas和生成式LLMs&#xff0c;极大地为开发人员降低了工作量。 传统的开发调用流程&#xff08;数据分析相关&#xff09;&#xff1a…

(UDP)其他信息: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

“System.Net.Sockets.SocketException”类型的异常在 mscorlib.dll 中发生&#xff0c;但未在用户代码中进行处理其他信息: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。这个异常表示端口已经被占用了&#xff0c;需要释放端口或者使用其他端口来建立连接。您可以…

CLion 2024:为Mac与Win打造的卓越跨平台集成开发环境

CLion 2024作为一款跨平台IDE&#xff0c;CLion 2024不仅完美支持Mac和Windows两大操作系统&#xff0c;更在细节之处展现了其出色的跨平台兼容性。无论你是在Mac的优雅界面下工作&#xff0c;还是在Windows的实用环境中编程&#xff0c;CLion 2024都能为你提供一致且流畅的开发…

如何使用 Grafana 监控文件系统状态

当 JuiceFS 文件系统部署完成并投入生产环境&#xff0c;接下来就需要着手解决一个非常重要的问题 —— 如何实时监控它的运行状态&#xff1f;毕竟&#xff0c;它可能正在为关键的业务应用或容器工作负载提供持久化存储支持&#xff0c;任何小小的故障或性能下降都可能造成不利…

ES6: set和map数据结构以及使用场景

ES6:set和map数据结构 一、Set 数据结构&#xff1a;二、使用场景&#xff1a;使用Set 进行去重三、Map 数据结构四、使用场景&#xff1a;使用Map进行树型数据懒加载刷新五、Set和Map的区别六、Map、Set的实际使用场景 Set 和 Map 是 ES6 中引入的两种新的数据结构&#xff0c…

设计模式代码实战-装饰者模式

1、问题描述 小明喜欢品尝不同口味的咖啡&#xff0c;他发现每种咖啡都可以加入不同的调料&#xff0c;比如牛奶、糖和巧克力。他决定使用装饰者模式制作自己喜欢的咖啡。 请设计一个简单的咖啡制作系统&#xff0c;使用装饰者模式为咖啡添加不同的调料。系统支持两种咖啡类型…

ANSYS Electromagnetics Suite 2023 R2 三维电磁(EM)仿真软件下载

Ansys家最新的三维电磁&#xff08;EM&#xff09;仿真软件ANSYS Electromagnetics Suite 2023 R2日前发布了&#xff0c;老wu这次分享得有点晚 &#xffe3;ω&#xffe3;&#xff0c;现在已经将资源上传到了网盘供大家免费下载&#xff0c;同时&#xff0c;为了让大家都能与…

企业航拍VR全景视频展示仿如上门参观

360度VR全景视频因其广阔的视野和身临其境的体验&#xff0c;无论再房产楼盘的精致呈现&#xff0c;旅游景点的全景漫游&#xff0c;还是校园风光的生动展示&#xff0c;都成为企业商户的首选。 360度vr全景视频编辑软件是深圳VR公司华锐视点提供多种常见的三维仿真场景供选择&…

防火墙操作!

当小编在Linux服务器上部署好程序以后&#xff0c;但是输入URL出现下述情况&#xff0c;原来是防火墙的原因&#xff01;&#xff01; 下面是一些防火墙操作&#xff01; 为保证系统安全&#xff0c;服务器的防火墙不建议关闭&#xff01;&#xff01; 但是&#xff0c;我们可…

最优算法100例之44-不用加减乘除做加法

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 不用加减乘除做加法 题解报告 最优解法:使用异或 1)异或是查看两个数哪些二进制位只有一个为1,这些是非进位位,可以直接…

[python]cartopy安装后测试代码

测试环境&#xff1a; anaconda3python3.11 cartopy0.23.0 测试代码&#xff1a; # 导入所需的库 import matplotlib as mpl import matplotlib.pyplot as plt import cartopy.crs as ccrs# 创建画布以及ax fig plt.figure() ax fig.add_subplot(111, projectionccrs.Pla…

Android - 安卓概述

什么是安卓? Android 是一种基于 Linux 的开源操作系统&#xff0c;适用于智能手机和平板电脑等移动设备。 Android 是由 Google 和其他公司领导的 Open Handset Alliance 开发的。 Android 为移动设备的应用程序开发提供了统一的方法&#xff0c;这意味着开发人员只需为 And…

React + three.js 实现人脸动捕与3D模型表情同步

系列文章目录 React 使用 three.js 加载 gltf 3D模型 | three.js 入门React three.js 3D模型骨骼绑定React three.js 3D模型面部表情控制React three.js 实现人脸动捕与3D模型表情同步 示例项目(github)&#xff1a;https://github.com/couchette/simple-react-three-facia…

Rust跨平台编译

❝ 如果你感觉自己被困住了&#xff0c;焦虑并充满消极情绪&#xff0c;生命出现了停滞&#xff0c;那么治疗方法很简单&#xff1a;「做点什么」。 ❞ 大家好&#xff0c;我是「柒八九」。一个「专注于前端开发技术/Rust及AI应用知识分享」的Coder 前言 之前我们不是写了一篇R…

SpringBoot 微服务token 传递实现

1、前言 随着微服务的流行&#xff0c;微服务之间的安全以及业务需要&#xff0c;都需要穿递token &#xff0c;而token的传递一般通过header 头来传递。从架构的角度来讲 &#xff0c;一般的企业应用都由nginx、业务网关和各个微服务组成。这个nginx 传递header 我就不讲述。下…

Java | Leetcode Java题解之第25题K个一组翻转链表

题目&#xff1a; 题解&#xff1a; class Solution {public ListNode reverseKGroup(ListNode head, int k) {ListNode hair new ListNode(0);hair.next head;ListNode pre hair;while (head ! null) {ListNode tail pre;// 查看剩余部分长度是否大于等于 kfor (int i 0…

Slf4j+Log4j简单使用

Slf4jLog4j简单使用 文章目录 Slf4jLog4j简单使用一、引入依赖二、配置 log4j2.xml2.1 配置结构2.2 配置文件 三、使用四、使用MDC完成日志ID4.1 程序入口处4.2 配置文件配置打印4.3 多线程日志ID传递配置 五. 官网 一、引入依赖 <dependencies><dependency><g…