天梯集训+代码打卡笔记整理

news2025/4/18 21:10:28

1.着色问题

        直接标注哪些行和列是被标注过的,安全格子的数量就是未标注的行*列

#include <bits/stdc++.h>
using namespace std;

const int N = 1e5+10;
int hang[N],lie[N];

int main(){
    int n,m;
    cin>>n>>m;
    int q;
    cin>>q;
    while(q--){
        int x,y;
        cin>>x>>y;
        if(x==0){
            if(hang[y]==0){
                hang[y] = 1;
                n--;
            }
        }else{
            if(lie[y]==0){
                lie[y] = 1;
                m--;
            }
        }
    }
    cout<<m*n<<endl;
    return 0;
}

2.插松枝

        当涉及队列的相关操作的时候需要判断队列是否为空,否则会导致段错误。

deque<int>dq;    # 双端队列
dq.push_back(t); # 尾插
dq.pop_back();   # 尾元素出队
dp.pop_front();  # 头元素出队
dq.empty();      # 判断队列是否为空

3.老板的作息表

vector<pair<string, string>>vec # 存储题目的两个字符串
vec.push_back({a,b});           # 在容器尾部插入元素
sort(vec.begin(), vec.end());   # 升序排序,第一个元素相同时,按照第二个元素升序排序
#include <bits/stdc++.h>
using namespace std;

int main(){
    int n;
    cin>>n;
    vector<pair<string,string>>s;
    for(int i=1;i<=n;i++){
        string a,b,c;
        cin>>a>>b>>c;
        s.push_back({a,c});
    }
    sort(s.begin(), s.end());
    string re = "-1";
    for(auto t:s){
        if(re=="-1"){
            re = t.second;
            if(t.first!="00:00:00"){
                cout<<"00:00:00 - "<<t.first<<endl;
            }
        }else{
            if(re!=t.first){
                cout<<re<<" - "<<t.first<<endl;
            }
            re = t.second;
        }
    }
    if(re!="23:59:59"){
        cout<<re<<" - "<<"23:59:59";
    }
    return 0;
}

4.在主串s中查找字串t

string t = "123";
string s = "123321";
s.find(t, 0)!=string::npos; # !=说明找到字串了

5.从字符串数据流中读取整数

string s = "12 7";
istringstream iss(s);    # 将字符串转化为数据流
int L,T;
iss>>L>>T;               # 从数据流中读出整数 L=12 T=7

6.字符大小写转化

#include <bits/stdc++.h>
using namespace std;

int main(){
    char a = 'A';
    char c = a+32; // 'a'
    cout<<c<<endl;
    char b = 'z';
    char d = b-32;
    cout<<d<<endl; // 'Z'
}

7.记忆数字

#include <bits/stdc++.h>
using namespace std;

int main(){
    string s;
    getline(cin, s);
    int len = 0;
    for(char c:s){
        if(isalpha(c)){    # 是否是字符
            len++;
        }else if(len){
            cout<<len%10;
            len = 0;
        }
    }
    if(len){
        cout<<len%10;
    }
    return 0;
}

8.猜单词

#include <bits/stdc++.h>
using namespace std;

struct Node {
    string s;
    int a, b;
};

int main() {
    vector<Node> vec(5);
    for (auto &[s, a, b] : vec) {
        cin >> s >> a >> b;
    }

    auto check = [&](const string &t) {
        bool res = true;
        set<char> ss(t.begin(), t.end());    # 对t的每个字符插入到set中
        for (auto &[s, a, b] : vec) {
            int x = 0, y = 0;
            for (int i = 0; i < 3; i++) {
                x += ss.count(s[i]);
                y += s[i] == t[i];
            }
            res &= x == a && y == b;
        }
        return res;
    };

    vector<string> ans;
    for (char i = 'A'; i <= 'Z'; i++) {
        for (char j = 'A'; j <= 'Z'; j++) {
            for (char k = 'A'; k <= 'Z'; k++) {
                string t = {i, j, k};
                if (check(t)) {
                    ans.push_back(t);
                }
            }
        }
    }

    cout << ans.size() << '\n';
    for (auto &x : ans) {
        cout << x << '\n';
    }

    return 0;
}

9.寻宝图

               从每个位置进行搜索,找到以这个位置扩散出去的岛屿,则岛屿数量加1,并将遍历过的地方都置为已经遍历过,遍历过程中判断是否有宝藏

#include <bits/stdc++.h>
using namespace std;

const int N = 1e5+7;
vector<int>a[N];
vector<int>whe[N];
bool flag;
int n,m;
int dx[] = {-1,0,1,0};
int dy[] = {0,-1,0,1};

void dfs(int i,int j){
    whe[i][j] = 1;
    if(a[i][j]>1){
        flag = true;
    }
    for(int t=0;t<=3;t++){
        int xx = i+dx[t];
        int yy = j+dy[t];
        if(xx>=0&xx<n&&yy>=0&&yy<m){
            if(whe[xx][yy]==1||a[xx][yy]==0){
                continue;
            }else{
                dfs(xx,yy);
            }
        }
    }
}

int main(){
    cin>>n>>m;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            char c;
            cin>>c;
            a[i].push_back(c-'0');
            whe[i].push_back(0);
        }
    }
    int sum=0, count = 0;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(whe[i][j]==0&&a[i][j]>0){
                sum++;
                flag = false;
                dfs(i,j);
                if(flag){
                    count++;
                }
            }
        }
    }
    cout<<sum<<" "<<count<<endl;
    return 0;
}

10.吉老师的回归

#include <bits/stdc++.h>
using namespace std;

int main(){
    int n,m;
    cin>>n>>m;
    cin.ignore();
    int flag = 0;
    m++;                    # m++是因为当做到最后一道题的时候是能AK的,若不+1会误判
    for(int i=1;i<=n;i++){
        string s;
        getline(cin, s);
        if(s.find("qiandao")!=string::npos||s.find("easy")!=string::npos){
            continue;
        }
        m--;
        if(m==0){
            flag = 1;
            cout<<s<<endl;
        }
    }
    if(flag==0){
        cout<<"Wo AK le"<<endl;
    }
    return 0;
}

11.乘法口诀表

        直接枚举从1到n,当项数多于n的时候break即可

#include <bits/stdc++.h>
using namespace std;

const int N = 1e4+7;
int a[N];

int main(){
    int a1,a2,n;
    cin>>a1>>a2>>n;
    a[1] = a1;
    a[2] = a2;
    int count = 2;
    for(int i=1;i<=n;i++){
        int re = a[i]*a[i+1];
        if(re<=9){
            count++;
            a[count] = re;
        }else{
            count++;
            a[count] = re/10;
            count++;
            a[count] = re%10;
        }
        if(count>=n){
            break;
        }
    }
    for(int i=1;i<=n;i++){
        cout<<a[i]<<(i==n?"":" ");
    }
    return 0;
}

12.深入虎穴

                深度搜索,需要注意的是,入口是入度为0的门

#include <bits/stdc++.h>
using namespace std;

const int N = 1e5+7;
int whe[N];         # 记录某个门是否被遍历过
int dis[N];         # 记录到每个门的距离
int du[N];          # 记录每个门的入度
vector<int>a[N];    # 记录每个门的邻接门

void dfs(int i){
    whe[i] = 1;
    for(int t=0;t<a[i].size();t++){
        if(whe[a[i][t]]==0){
            dis[a[i][t]] = dis[i]+1;
            dfs(a[i][t]);
        }else{
            continue;
        }
    }
}

int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        int k;
        cin>>k;
        for(int j=1;j<=k;j++){
            int x;
            cin>>x;
            du[x]++;
            a[i].push_back(x);
        }
    }
    for(int i=1;i<=n;i++){
        if(du[i]==0){
            dfs(i);
        }
    }
    int distance = -1;
    int index = -1;
    for(int i=1;i<=n;i++){
        if(dis[i]>distance){
            distance = dis[i];
            index = i;
        }
    }
    cout<<index<<endl;
    return 0;
}

13.倒数第N个字符

            26进制,其中n刚开始要--,因为最后一个字符算倒一字符

#include <bits/stdc++.h>
using namespace std;

int main(){
    int l,n;
    cin>>l>>n;
    string re = "";
    n--;
    for(int i=1;i<=l;i++){
        re += 'z';
    }
    for(int i=l-1;i>=0;i--){
        re[i] -= n%26;
        n /= 26;
    }
    cout<<re<<endl;
    return 0;
}

14.福到了

        对每一行的数据当作字符串来处理,先将每行reverse,再将总体reverse即可得到reverse 的结果,vector容器当作数组使用的时候要初始化

#include <bits/stdc++.h>
using namespace std;

int main(){
    char c;
    int n;
    cin>>c>>n;
    cin.ignore();
    vector<string>be(n+1),af(n+1);
    for(int i=1;i<=n;i++){
        string t;
        getline(cin, t);
        af[i] = t;
        be[i] = t;
        reverse(af[i].begin(), af[i].end());
    }
    reverse(af.begin()+1, af.end());
    if(af==be){
        cout<<"bu yong dao le"<<endl;
    }
    for(int i=1;i<=n;i++){
        for(int j=0;j<n;j++){
            if(af[i][j]!=' '){
                cout<<c;
            }else{
                cout<<' ';
            }
        }
        cout<<endl;
    }
    return 0;
}

持续更新中~

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

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

相关文章

支付系统设计入门:核心账户体系架构

&#x1f449;目录 1 账户记账理论 2 账户设计 3 账户性能问题 4 账户核心架构 5 小结 第三方支付作为中立的第三方&#xff0c;截断了用户和商户的资金流&#xff0c;资金先从用户账户转移到第三方支付平台账户&#xff0c;得到双方确认后再从支付平台账户转移到商户账户。 支…

[LevelDB]Block系统内幕解析-元数据块(Meta Block)元数据索引块(MetaIndex Block)索引块(Index Block)

本文内容组织形式 Block的基本信息作用示意图举例说明 源码解析Footer格式写入&读取编码&解码 元数据块&#xff08;Meta Block&#xff09;构建&读取 元数据索引块构建&读取 索引块定义构建&读取核心方法-FindShortestSeparator&FindShortSuccessor作…

leetcode:905. 按奇偶排序数组(python3解法)

难度&#xff1a;简单 给你一个整数数组 nums&#xff0c;将 nums 中的的所有偶数元素移动到数组的前面&#xff0c;后跟所有奇数元素。 返回满足此条件的 任一数组 作为答案。 示例 1&#xff1a; 输入&#xff1a;nums [3,1,2,4] 输出&#xff1a;[2,4,3,1] 解释&#xff1a…

断言与反射——以golang为例

断言 x.(T) 检查x的动态类型是否是T&#xff0c;其中x必须是接口值。 简单使用 func main() {var x interface{}x 100value1, ok : x.(int)if ok {fmt.Println(value1)}value2, ok : x.(string)if ok {//未打印fmt.Println(value2)} }需要注意如果不接受第二个参数就是OK,这…

【数据结构】排序算法(下篇·开端)·深剖数据难点

前引&#xff1a;前面我们通过层层学习&#xff0c;了解了Hoare大佬的排序精髓&#xff0c;今天我们学习的东西可能稍微有点难度&#xff0c;因此我们必须学会思想&#xff0c;我很受感慨&#xff0c;借此分享一下&#xff1a;【用1520分钟去调试】&#xff0c;如果我们遇到了任…

山东大学软件学院创新项目实训开发日志(9)之测试前后端连接

在正式开始前后端功能开发前&#xff0c;在队友的帮助下&#xff0c;成功完成了前后端测试连接&#xff1a; 首先在后端编写一个测试相应程序&#xff1a; 然后在前端创建vue 并且在index.js中添加一下元素&#xff1a; 然后进行测试&#xff0c;测试成功&#xff1a; 后续可…

蓝桥杯C++组算法知识点整理 · 考前突击(上)【小白适用】

【背景说明】本文的作者是一名算法竞赛小白&#xff0c;在第一次参加蓝桥杯之前希望整理一下自己会了哪些算法&#xff0c;于是有了本文的诞生。分享在这里也希望与众多学子共勉。如果时间允许的话&#xff0c;这一系列会分为上中下三部分和大家见面&#xff0c;祝大家竞赛顺利…

springboot调用python文件,python文件使用其他dat文件,适配windows和linux,以及docker环境的方案

介绍 后台是用springboot技术&#xff0c;其他同事做的算法是python&#xff0c;现在的需求是springboot调用python&#xff0c;python又需要调用其他的数据文件&#xff0c;比如dat文件&#xff0c;这个文件是app通过蓝牙获取智能戒指数据以后&#xff0c;保存到后台&#xf…

GSO-YOLO:基于全局稳定性优化的建筑工地目标检测算法解析

论文地址:https://arxiv.org/pdf/2407.00906 1. 论文概述 《GSO-YOLO: Global Stability Optimization YOLO for Construction Site Detection》提出了一种针对建筑工地复杂场景优化的目标检测模型。通过融合全局优化模块(GOM)​、稳定捕捉模块(SCM)​和创新的AIoU损失函…

系统思考—提升解决动态性复杂问题能力

感谢合作伙伴的信任推荐&#xff01; 客户今年的人才发展重点之一&#xff0c;是提升管理者应对动态性、复杂性问题的能力。 在深入交流后&#xff0c;系统思考作为关键能力模块&#xff0c;最终被纳入轮训项目——这不仅是一次培训合作&#xff0c;更是一场共同认知的跃迁&am…

P1162 洛谷 填涂颜色

题目描述 思考 看数据量 30 而且是个二维的&#xff0c;很像走迷宫 直接深搜&#xff01; 而且这个就是搜连通块 代码 一开始的15分代码&#xff0c;想的很简单&#xff0c;对dfs进行分类&#xff0c;如果是在边界上&#xff0c;就直接递归&#xff0c;不让其赋值&#xff0c…

docker安装nginx,基础命令,目录结构,配置文件结构

Nginx简介 Nginx是一款轻量级的Web服务器(动静分离)/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。其特点是占有内存少&#xff0c;并发能力强. &#x1f517;官网 docker安装Nginx &#x1f433; 一、前提条件 • 已安装 Docker&#xff08;dock…

用Django和AJAX创建一个待办事项应用

用Django和AJAX创建一个待办事项应用 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 用Django和AJAX创建一个待办事项应用让我们创建一个简单的 Django 项目,其中包含不同类型的 A…

JavaScript:游戏开发的利器

在近年来的科技迅速发展中&#xff0c;JavaScript 已逐渐成为游戏开发领域中最受欢迎的编程语言之一。它的跨平台特性、广泛的社区支持、丰富的库和框架使得开发者能够快速、有效地创建各种类型的游戏。本文将深入探讨 JavaScript 在游戏开发中的优势。 一、跨平台支持 JavaSc…

C语言今天开始了学习

好多年没有弄了&#xff0c;还是捡起来弄下吧 用的vscode 建议大家参考这个配置 c语言vscode配置 c语言这个语言简单&#xff0c;但是今天听到了一个消息说python 不知道怎么debug。人才真多啊

电商素材革命:影刀RPA魔法指令3.0驱动批量去水印,实现秒级素材净化

本文 去除水印实操视频展示电商图片水印处理的困境​影刀 RPA 魔法指令 3.0 强势登场​利用魔法指令3.0两步实现去除水印操作关于影刀RPA 去除水印实操视频展示 我们这里选择了4张小红书里面比较帅气的图片&#xff0c;但凡用过小红书的都知道&#xff0c;小红书右下角是会有小…

CVA6:支持 Linux 的 RISC-V CPU CORE-V

RISC-V 是一种开源的可扩展指令集架构 (ISA)&#xff0c;在过去几年中广受欢迎。RISC-V 的主要特性之一是它采用整体架构中性设计&#xff0c;支持浮点运算、加载存储架构、符号扩展加速和多路复用器简化。这使得 RISC-V 成为 FPGA 上软处理器的经济实惠的选择。自 RISC-V ISA …

轻奢宅家|约克VRF带你畅享舒适居家体验

下班回到家最期待什么&#xff1f;当然是一阵阵沁人心脾的舒适感扑面而来啦&#xff01;      想要从头到脚都舒服自在&#xff1f;答案就在眼前——就是它&#xff01;约克VRF中央空调&#xff01;      约克VRF中央空调独特的臻静降噪技术&#xff0c;让空调运行音轻…

uniapp微信小程序图片生成水印

整体思路&#xff1a; 用户通过uni.chooseImage选择图片后&#xff0c;获得图片文件的path和size。通过path调用uni.getImageInfo获取图片信息&#xff0c;也就是图片宽高。图片宽高等比缩放至指定大小&#xff0c;不然手机处理起来非常久&#xff0c;因为手机随便拍拍就很大。…

不用额外下载jar包,idea快速查看使用的组件源码

以nacos为例子&#xff0c;在idea中引入了nacos依赖&#xff0c;就可以查看源码了。 2. idea选择open&#xff08;不关闭项目直接选择file-open也可以&#xff09;, 在maven的仓库里找到对应的包&#xff0c;打开 2.idea中选择 jar包&#xff0c;选择 add as library 3.这样j…