【蓝桥杯专题】枚举、模拟与排序 (C++ | 洛谷 | acwing | 蓝桥)

菜狗现在才开始备战蓝桥杯QAQ

文章目录

  • 【蓝桥杯专题】 (C++ | 洛谷 | acwing | 蓝桥)
  • 回文日期
  • 纸张尺寸 蓝桥杯真题
  • 错误票据
  • AcWing 788. 逆序对的数量
  • 航班时间
  • 移动距离
  • 连号区间
  • 1236. 递增三元组
  • P
  • P
  • P
  • P
  • P

在这里插入图片描述

【蓝桥杯专题】 (C++ | 洛谷 | acwing | 蓝桥)

文章目录

  • 【蓝桥杯专题】 (C++ | 洛谷 | acwing | 蓝桥)
  • 回文日期
  • 纸张尺寸 蓝桥杯真题
  • 错误票据
  • AcWing 788. 逆序对的数量
  • 航班时间
  • 移动距离
  • 连号区间
  • 1236. 递增三元组
  • P
  • P
  • P
  • P
  • P

回文日期

在这里插入图片描述

链接 链接

#include <bits/stdc++.h>
// #include <iostream>
using namespace std;
typedef long long ll;
typedef double db;
#define rep(i, a, n) for(int i = a; i <= n; i ++)
#define per(i, a, n) for(int i = n; i <= a; i --)
#define pb push_back;
#define fs first;
#define sz second;
#include <stdlib.h> // atoi
#define debug cout<<"debug"<<"\n"
#define endl "\n";
const int INF = 0x3f3f3f3f;
const int mod=1e9+7;
const int N = 1e5 + 10;

int months[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};

// int months[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool check (int date) {
    int year = date / 10000;
    int month = date % 10000 / 100;
    int day = date % 100;
    
    //判断 离谱日期
    if(month > 13 || !day || !month) return false;
    
    
    // 判断月份对应日期
    if(month != 2 && day > months[month]) return false;
    
    
    //判断润年
    if(month == 2) {
        //如果能被 400 整除  并且 能被四整除 或不能被100整除
        bool leap = year % 400 == 0 &&  year % 4 == 0 || year % 100;
        if(day > leap + 28) return false;
    }
    
    return true;
}

void solve () {
    int s1, s2;
    cin >> s1 >> s2;
    int res = 0;    
    for(int i = 1; i < 10000; i ++) {
        int x = i, r = i;
        for(int j = 0; j < 4; j ++) {
            r = r * 10 + x % 10, x /= 10;
        }
        if(r >= s1 &&  r <= s2 && check(r)) res ++;
    }

    cout << res << endl;
}

int main(void){
// 	freopen("in.txt","r",stdin);
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int T = 1;
    // cin >> T;
	while(T --) solve();
	return 0;
}

纸张尺寸 蓝桥杯真题

  • 模拟题
    scanf 新操作
    在这里插入图片描述

错误票据

链接 链接

  • 读入 可以学一下
#include <bits/stdc++.h>
// #include <iostream>
using namespace std;
typedef long long ll;
typedef double db;
#define rep(i, a, n) for(int i = a; i <= n; i ++)
#define per(i, a, n) for(int i = n; i <= a; i --)
#define pb push_back;
#define fs first;
#define sz second;
#include <stdlib.h> // atoi
#define debug cout<<"debug"<<"\n"
#define endl "\n";
const int INF = 0x3f3f3f3f;
const int mod=1e9+7;
const int N = 1e5 + 10;

int a[N];
void solve () {
    string line;
    int n = 0;
    int cnt;
    cin >> cnt;
    getline(cin,line);
    while (cnt --) { // 空间多开点  因为很大 80 一行可能10个 就是 800 甚至更多
        getline(cin,line);
        stringstream ssin(line);
        while(ssin >> a[n]) n ++;
    }
    sort(a,a + n + 1);
    int res1, res2;
    for(int i = 0; i <= n; i ++) {
        if(a[i] == a[i - 1] + 2)res1 = a[i - 1] + 1;
        if(a[i] == a[i - 1]) res2 = a[i];
    }
    cout << res1 << ' ' << res2 << endl;
}

int main(void){
	freopen("in.txt","r",stdin);     
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int T = 1;
    // cin >> T;
	while(T --) solve();
	return 0;
}

AcWing 788. 逆序对的数量

链接 链接

//归并排序


#include <bits/stdc++.h>
// #include <iostream>
using namespace std;
typedef long long ll;
typedef double db;
#define rep(i, a, n) for(int i = a; i <= n; i ++)
#define per(i, a, n) for(int i = n; i <= a; i --)
#define pb push_back;
#define fs first;
#define sz second;
#include <stdlib.h> // atoi
#define debug cout<<"debug"<<"\n"
#define endl "\n";
const int INF = 0x3f3f3f3f;
const int mod=1e9+7;
const int N = 1e5 + 10;

ll res = 0;
int q[N], w[N];

void merge_sort(int q[], int l, int r) {    
    if(l >= r) return;
    int mid = l + r >> 1;
    merge_sort(q, l, mid) ,merge_sort(q, mid + 1, r);

    int i = l, j = mid + 1, k = 0;
    while(i <= mid && j <= r) {
        if(q[i] <= q[j]) w[k ++] = q[i ++];
        else {
            w[k ++] = q[j ++];
            res += mid - i + 1; // 与递归的区别 , 把不同元素区间
        }
    } 
    while(i <= mid ) w[k ++] = q[i ++];
    while(j <= r) w[k ++] = q[j ++];

    for(i = l, j = 0; i <= r; i ++, j ++) q[i] = w[j];

}

void solve () {
    int n;
    cin >> n;
    rep(i, 0, n - 1) {
        cin >> q[i];
    }

    merge_sort(q, 0, n - 1);


    cout << res <<endl;
}

int main(void){
// 	freopen("in.txt","r",stdin);
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int T = 1;
    // cin >> T;
	while(T --) solve();
	return 0;
}

航班时间

 scanf("%d(+%d)%d", &a, &b, &c);   如果不匹配 直接忽略 b的读

  • 在这里插入图片描述

链接 链接

#include<iostream>
#include<cstring>
#include<cstdio>
#include <limits.h>
#include<algorithm>
#include <string>
#include <vector>
using namespace std;
typedef long long ll;
typedef double db;
#define rep(i, a, n) for(int i = a; i <= n; i ++)
#define per(i, a, n) for(int i = n; i <= a; i --)
#define pb push_back;
#define fs first;
#define sz second;
#include <stdlib.h> // atoi
#define debug cout<<"debug"<<"\n"
#define endl "\n";
const int INF = 0x3f3f3f3f;
const int mod=1e9+7;
const int N = 1e5 + 10;

int getTime(void)
{
    int h1,m1,s1,h2,m2,s2,d=0;
    scanf("%d:%d:%d %d:%d:%d (+%d)",&h1,&m1,&s1,&h2,&m2,&s2,&d);
    int time=d*24*3600+h2*3600+m2*60+s2-(h1*3600+m1*60+s1);
    return time;
}

void solve () {
    int t;
    scanf("%d",&t);
    for(int i = 0; i < t; i++)
    {
        int time1=getTime();
        int time2=getTime();
        int t=(time1+time2)/2;
        printf("%02d:%02d:%02d\n", t/3600, t/60%60, t%60);
    }
}

int main(void){
	freopen("in.txt","r",stdin);
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int T = 1;
    cin >> T;
	while(T --) solve();
	return 0;
}

移动距离

链接 链接

  • 简单数学模拟 + 类似蛇形填数
#include<iostream>
#include<cstring>
#include<cstdio>
#include <limits.h>
#include<algorithm>
#include <string>
#include <vector>
#include <cmath>
#include <stdlib.h>
#include <stdlib.h>
using namespace std;
typedef long long ll;
typedef double db;
#define rep(i, a, n) for(int i = a; i <= n; i ++)
#define per(i, a, n) for(int i = n; i <= a; i --)
#define pb push_back;
#define fs first;
#define sz second;
#include <stdlib.h> // atoi
#define debug cout<<"debug"<<"\n"
#define endl "\n";
const int INF = 0x3f3f3f3f;
const int mod=1e9+7;
const int N = 1e5 + 10;

void solve () {
	int w, n, m;
    cin >> w >> n >> m;
    m -- , n --;
    int x1 = m % w;
    int y1 = m / w;
    int x2 = n % w;
    int y2 = n / w;
    if(y1 % 2) x1 = w - x1 - 1;
    if(y2 % 2) x2 = w - x2 - 1;
    int ans = abs(x2 - x1) + abs(y2 - y1);
    cout << ans << endl;
}

int main(void){
	freopen("in.txt","r",stdin);
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int T = 1;
    // cin >> T;
	while(T --) solve();
	return 0;
}

链接 链接



连号区间

  • 思路 : 区间连续 则 边界差 == max - min
    在这里插入图片描述

链接 链接

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int a[10010];

int main () {
    int n;
    cin >> n;
    for(int i = 0; i < n; i ++) {
        cin >> a[i];
    }
    long long res = 0;
    
    
    //因为是连续的所以在所取的[l,r]范围中寻找最大值,
    // 最小值。然后相减,最后和r-l(区间长度)作比较即可。 
    // 范围 i ~ j
    for(int i = 0; i < n; i ++) {
            int minn = 10000;
            int maxx = -10000;
        for(int j = i; j < n; j ++ ) {
             maxx = max(maxx, a[j]); // 更新区间值
             minn = min(minn, a[j]);
            if((j - i)  == (maxx - minn)) res ++;
        }
    }
    cout <<res <<endl;
    
    return 0;
}

1236. 递增三元组

枚举一个数 b 二分查找 a,c
用二分模板 O(n * logn) 找完需要判断一下找到的值与 b[i]比较
查找A:由于枚举的是B,所以查找A就只需要它最右边的那个数,也就是小于b[i]的最大值,使用SL模板
查找C:同上,找的是大于b[i]的最小值 ,也就是最左边,用SR即可。
链接 链接


#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 100010;
int a[N], b[N], c[N];


int main () {
    int n;
    
    long long res = 0;
    cin >> n;
    for (int i = 0; i < n; i ++ ) cin >> a[i];
    
    for (int i = 0; i < n; i ++ ) cin >> b[i];
    
    for (int i = 0; i < n; i ++ ) cin >> c[i];
    
    sort(a, a + n);
    sort(b, b + n);
    sort(c, c + n);
    
    for(int i = 0; i < n; i ++) {
        int x = b[i];
        int l = 0, r = n - 1;
        int aa = 0, bb = 0;
        while(l < r) {
            int mid = l + r + 1 >> 1;
            if(a[mid] < x) l = mid;
            else r = mid - 1;
        }
        
        //二分结果未必找得到  所以需要判断
        if(a[l] >= b[i]) {
            r = -1;
        } 
            aa = r;
        
        l = 0, r = n - 1;
        while(l < r) {
            int mid = (l + r) / 2;
            if(c[mid] > x) r = mid;
            else l = mid + 1;
        }
        
        //二分结果未必找得到  所以需要判断
        if(b[i] >= c[l]){
            r = n;
        } 
        bb = r;
    
        
        
        res += (long long )(aa + 1) * (n - bb);
    }
    cout << res <<endl;
    
    return 0;
}

P

链接 链接



P

链接 链接



P

链接 链接



P

链接 链接



P

链接 链接



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

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

相关文章

腾讯云轻量应用服务器、CVM云服务器和GPU云服务器价格表(2023版)

这是腾讯云GPU云服务器、CVM云服务器、轻量应用服务器配置价格表&#xff0c;最近整理的。目前腾讯云服务器分为轻量应用服务器、CVM云服务器和GPU云服务器&#xff0c;首先介绍一下这三种服务器。 1、GPU 云服务器&#xff08;Cloud GPU Service&#xff0c;GPU&#xff09;是…

苹果发布无线充新专利,苹果Find My技术成为近几年苹果的重要创新

根据美国商标和专利局公示的清单&#xff0c;苹果公司近日获批了编号为 US 20230080598 A1 新专利。该专利主要为各种类型的无线充电器制造配件盒。 苹果表示近年来无线充电市场得到了快速发展&#xff0c;但目前市场尚未规范&#xff0c;可能使用不同的无线充电标准。这就导…

SkyWalking 日志收集

SkyWalking 日志收集一、需求二、步骤2.1 pom文件引入依赖2.2 logback-spring.xml文件修改2.3 修改agent的配置文件2.4 启动java应用2.5 日志查看三、验证四、常见问题4.1 修改完logback配置文件&#xff0c;项目启动报错4.1.1 错误4.1.2 解决4.2 UI的log页面没有内容一、需求 …

【华为机试真题详解 Python实现】统计差异值大于相似值二元组个数【2023 Q1 | 100分】

文章目录 前言题目描述输入描述输出描述题目解析参考代码前言 《华为机试真题详解》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能最优)…

喜马拉雅基于 HybridBackend 的深度学习模型训练优化实践

喜马拉雅作者&#xff1a;李超、陶云、许晨昱、胡文俊、张争光、赵云鹏、张玉静 喜马拉雅AI云借助阿里云提供的HybridBackend开源框架&#xff0c;实现了其推荐模型在 GPU 上的高效训练。 业务介绍 推荐场景是喜马拉雅app的重要应用之一&#xff0c;它广泛应用于热点、猜你喜欢…

spark第三章:工程化代码

系列文章目录 spark第一章&#xff1a;环境安装 spark第二章&#xff1a;sparkcore实例 spark第三章&#xff1a;工程化代码 文章目录系列文章目录前言一、三层架构二、拆分WordCount1.三层拆分2.代码抽取总结前言 我们上一次博客&#xff0c;完成了一些案例的练习&#xff0…

Android电视盒子最强看电视app-tvbox配置(视频源)教程

今天给大家分享一下安卓tv上最强的看视频神器-tvbox的配置方法 tvbox是一款影视观看类的软件&#xff0c;各种影视资源都是为你免费提供的&#xff0c;还有海量热门影视为你提供电视直播&#xff0c;让你可以实时在线进行观看以及体验一样&#xff0c;超多影视剧内容你感兴趣的…

ChatGPT4已经来了,30秒做一个弹球游戏!

前两周写了关于ChatGPT的文章&#xff0c;折腾了一晚&#xff01;终于开通了ChatGPT plus版本&#xff01;ChatGPT_Plus的功能有多强&#xff01;3分钟写一个贪吃蛇游戏&#xff01;然后果断的注册了Plus, 事实证明这个决定是对的&#xff0c;现在只有plus 可以抢先尝鲜GPT4, 免…

机器学习---聚类算法

目录【写在前面】1、确认安装有scikit-learn库2、使用 make _ classification ()建立数据集3、使用模型进行分类头文件汇总亲和力传播聚合聚类BIRCH 聚类DBSCAN【本人的毕业设计系统中有用到】K-均值高斯混合模型【写在最后】【写在前面】 sklearn和scikit-learn&#xff1a; …

sql中exists的常用用法

exists中子查询结果集非空&#xff0c;则exists子查询返回true。如果exists子查询结果集为空&#xff0c;则exists子查询返回false。在平常的开发工作中&#xff0c;经常会用到exists&#xff0c;那么它应该如何使用呢&#xff1f;1&#xff1a;查询兴趣爱好为跳舞的同学姓名及…

JMM内存模型

JMM内存模型JMM内存模型定义三大特性原子性可见性有序性volatile语义JMM规则操作系统实现术语缓存一致性要求缓存一致性机制写传播事务串行化重排序as-if-serial 语义&#xff08;像是有序的&#xff09;happens-before 原则happens-before 原则的八大子原则内存屏障总结finalf…

C#大型HIS医院LIS管理系统源码

▶ 一、实验室信息管理系统&#xff08;LIS&#xff09;是什么&#xff1f; 实验室信息管理系统也就是平时所说的LIS&#xff08;Laboratory Information System&#xff09;系统&#xff0c;其主要服务的对象主要是医院检验科工作人员&#xff0c;也是医院信息化建设必…

手撕数据结构—栈

Tips不得不再次提一下这个语法问题&#xff0c;当数组创建的时候&#xff0c;进行初始化的时候&#xff0c;分为全部初始化或者说部分初始化&#xff0c;对于不完全初始化而言&#xff0c;剩下的部分就全部默认为零。现在比如说你想对整型数组的1万个元素把它全部变成-1&#x…

简介SpringBoot

目录 一、简介SpringBoot 二、SpringBoot项目的创建与使用 1、创建SpringBoot项目 2、使用SpringBoot项目 三、 SpringBoot中的配置文件 .properties配置文件 读取配置文件信息 .yml配置文件 读取配置文件信息 四、SpringBoot中的日志文件 1、日志文件简介 2、…

(数据结构)八大排序算法

目录一、常见排序算法二、实现1. 直接插入排序2.&#x1f31f;希尔排序3. 选择排序4.&#x1f31f;堆排序5. 冒泡排序7. &#x1f31f;快速排序7.1 其他版本的快排7.2 优化7.3 ⭐非递归7. &#x1f31f;归并排序7.1 ⭐非递归8. 计数排序三、总结1. 分析排序 (Sorting) 是计算机…

网络安全的特性

0x00 前言 网络安全的特性包括&#xff0c;机密性&#xff0c;完整性&#xff0c;可用性&#xff0c;真实性和不可否认性。详细的内容可以参考如下的内容。 Xmind资源请下载~ 0x01 机密性 机密性&#xff08;Confidentiality&#xff09; 意味着阻止未经授权的实体&#x…

【springcloud 微服务】Spring Cloud Alibaba Sentinel使用详解

目录 一、前言 二、分布式系统遇到的问题 2.1 服务可用性问题 2.1.1 单点故障 2.1.2 流量飙升 2.1.3 容错机制 2.2 服务雪崩问题 三、 服务可用性解决方案 3.1 服务容错机制 3.1.1 超时机制 3.1.2 服务限流 3.1.3 隔离 3.2 服务熔断 3.2.1 什么是服务熔断 3…

springcloud学习总结

springcloud 构建微服务项目步骤 导入依赖编写配置文件开启这个功能 Enablexxx配置类 于2023年2月24日下午17点38分开始学习于2023年3月17日晚上20点26分学完总结代码地址&#xff1a;https://gitee.com/liang-weihao/StudySpringcloud学习笔记地址&#xff1a;https://www.…

JavaEE简单示例——基于注解的AOP实现

简单介绍&#xff1a; 之前我们介绍了关于XML的面向切面的编程&#xff0c;通过配置文件的方法&#xff0c;在不修改源代码的情况下完成了对已有方法的增强 除了基于XML配置文件的方式&#xff0c;我们还可以使用更简单的&#xff0c;基于注解的方式。 每一次&#xff0c;我们…

【DBC专题】-12-不同类型报文(应用/诊断/网关/测量标定)在DBC中配置,以及在Autosar各模块间的信号数据流向

点击返回「Autosar从入门到精通-实战篇」总目录 案例背景(共18页精讲)&#xff1a;该篇博文将告诉您&#xff1a; 1)Autosar中&#xff0c;不同类型报文(App应用&#xff0c;UDS/OBD诊断&#xff0c;NM网络管理报文&#xff0c;XCP测量标定)的信号数据流向&#xff1b; 2)CAN …