C++小白训练第六天

news/2026/1/16 22:22:52/文章来源:https://www.cnblogs.com/godjian/p/19494234

C++小白训练第六天

以下为牛客挑战

今日收获

 了解了map<int,int>m;,map可以去重共,因为键值对key是唯一的,for (auto it = m.begin(); it != m.end(); ++it) {int key   = it->first;   // 键int& val  = it->second;  // 值
}
for (auto& [k, v] : m) { /* k 是键,v 是值 */ }
所以一般使用时候都是先转换为vector<pair<int,int>>m;
for(auto &z: m){v.emplace_back(z);}

小红出千

G-小红出千_牛客周赛 Round 123

image-20260116140027273

5
1 2 3 4 6
1
5 5

这个顺子一定是长度为n的,所以当我门固定一个左端,那右端就可以确定了,我们可以用双指针去维护

image-20260116141523134

我们去维护一个区间,我们发现在区间中,只要我们的数够多就可以,我们就可以更少的从区间外去变换到区间里面,所以我就去遍历一下找到合适的区间,

最后找到一个区间满足且有较多的数,再把这些里面的数进行标记一下,标记为使用

一个是数有没有用,一个是位置

for(int i=l;i<=r;i++){vis[v[i].second]=1;//位置used.emplace(v[i].first);//用过了}

解题代码

#include<bits/stdc++.h>
#define int long long
#define lll __uint128_t
#define PII pair<int ,int>
#define endl '\n'
using namespace std;
#define yn(ans) printf("%s\n", (ans)?"Yes":"No");//快速打印
#define YN(ans) printf("%s\n", (ans)?"YES":"NO");
#define REP(i, e) for (int i = 0; i < (e); ++i)
#define REP1(i, s, e) for (int i = (s); i <=(e); ++i)
#define TESTS int t; cin >> t; while (t--)
#define TEST
const int N=2e5+10,M=1e3+10,mod=1e9+7;
int a[N],b[N],c[N],pre[N];signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;cin>>n;map<int,int>m;vector<int>s(n+1);for(int i=1;i<=n;i++){cin>>s[i];m[s[i]]=i;}vector<pair<int,int>>v;for(auto &z: m){v.emplace_back(z);}
//    for(int i=0;i<v.size();i++){
//        cout<<v[i].first<<" "<<v[i].second<<endl;
//    }int l=-1,r=-1;int mx=0;for(int i=0,j=0;i<v.size();i++){while(j<i&&v[i].first-v[j].first>=n){j++;}if(i-j+1>mx){mx=i-j+1;l=j;r=i;}}set<int>used;vector<int>vis(n+1);for(int i=l;i<=r;i++){vis[v[i].second]=1;used.emplace(v[i].first);}vector<pair<int,int>>ans;int dow=v[l].first;for(int i=1;i<=n;i++){while(used.count(dow)){dow++;}if(vis[i])continue;ans.emplace_back(i,dow);dow++;}cout<<ans.size()<<endl;for(auto & [x,y]:ans){cout<<x<<" "<<y<<endl;}return 0;
}

牛客周赛 Round 122

CPC Problems

image-20260116142726581

12
A B C D E F G H I J K L

解题代码

#include<bits/stdc++.h>
#define int long long
#define lll __uint128_t
#define PII pair<int ,int>
#define endl '\n'
using namespace std;
#define yn(ans) printf("%s\n", (ans)?"Yes":"No");//快速打印
#define YN(ans) printf("%s\n", (ans)?"YES":"NO");
#define REP(i, e) for (int i = 0; i < (e); ++i)
#define REP1(i, s, e) for (int i = (s); i <=(e); ++i)
#define TESTS int t; cin >> t; while (t--)
#define TEST
const int N=2e5+10,M=1e3+10,mod=1e9+7;
int a[N],b[N],c[N],pre[N];signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;cin>>n;for(int i=0;i<n;i++){char m='A'+i;cout<<m<<" ";}return 0;
}

Chess

image-20260116154711324

输入和输出

2
1 1
3 3
1
2

image-20260116152152216

这个是规律题,如果不知道规律很难做出来

直接上结论

先写一下不要算的情况,第一点行数或者列数小于等于2没办法跳,直接输出1;然后结论是 n/2向上取整*m/2向上取整得到的结果继续向上取整

解题代码

#include<bits/stdc++.h>
#define int long long
#define lll __uint128_t
#define PII pair<int ,int>
#define endl '\n'
using namespace std;
#define yn(ans) printf("%s\n", (ans)?"Yes":"No");//快速打印
#define YN(ans) printf("%s\n", (ans)?"YES":"NO");
#define REP(i, e) for (int i = 0; i < (e); ++i)
#define REP1(i, s, e) for (int i = (s); i <=(e); ++i)
#define TESTS int t; cin >> t; while (t--)
#define TEST
const int N=2e5+10,M=1e3+10,mod=1e9+7;
int a[N],b[N],c[N],pre[N];
void solve(){int n,m;cin>>n>>m;if(n<=2||m<=2){cout<<"1"<<endl;}else{n=(n+1)/2;m=(m+1)/2;cout<<(n*m+1)/2<<endl;}
};
signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);TESTS{solve();};return 0;
}

Sequence Cost

C-Sequence Cost_牛客周赛 Round 122

image-20260116161951910

2
4
1 3 1 1
2
1 1
6
2

这题其实就两种情况

要么不改,直接sum就完事了,

要么全部改为最小加一个最大的就可以了。

image-20260116162444619

解题代码

#include<bits/stdc++.h>
#define int long long
#define lll __uint128_t
#define PII pair<int ,int>
#define endl '\n'
using namespace std;
#define yn(ans) printf("%s\n", (ans)?"Yes":"No");//快速打印
#define YN(ans) printf("%s\n", (ans)?"YES":"NO");
#define REP(i, e) for (int i = 0; i < (e); ++i)
#define REP1(i, s, e) for (int i = (s); i <=(e); ++i)
#define TESTS int t; cin >> t; while (t--)
#define TEST
const int N=2e5+10,M=1e3+10,mod=1e9+7;
int a[N],b[N],c[N],pre[N];
void solve(){int n;cin>>n;vector<int>m(n);int m1=1e10,m2=0,sum=0;for(int i=0;i<n;i++){cin>>m[i];if(m[i]>m2){m2=m[i];}if(m1>m[i]){m1=m[i];}sum+=m[i];}if(sum>(m2+m1*n)){cout<<m2+m1*n<<endl;}else{cout<<sum<<endl;}};
signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);TESTS{solve();};return 0;
}

Digital Deletion

image-20260116220953239

2
4
2 3 4 6
3
1 1 1
4
0

对于一个给定的非负整数集合 S,mex(S) 是最小的不在 S 中的非负整数

思路就我们可以先排序,然后从前面向后遍历,我们会发现存在这个数的和存在一个范围,【0,前面数的和】,如果下一个数大于这个和+1的话就相当于要取合并的了,中间会存在一个空缺。我们所以之后的都不可以取了

image-20260116221311334

特别判定一下0的

这个范围

2
5
0 0 0 0 0
3
0 0 1
//可以直接把0全部删除。

全零的分开讨论

就行了

解题代码

#include<bits/stdc++.h>
#define int long long
#define lll __uint128_t
#define PII pair<int ,int>
#define endl '\n'
using namespace std;
#define yn(ans) printf("%s\n", (ans)?"Yes":"No");//快速打印
#define YN(ans) printf("%s\n", (ans)?"YES":"NO");
#define REP(i, e) for (int i = 0; i < (e); ++i)
#define REP1(i, s, e) for (int i = (s); i <=(e); ++i)
#define TESTS int t; cin >> t; while (t--)
#define TEST
const int N=2e5+10,M=1e3+10,mod=1e9+7;
int a[N],b[N],c[N],pre[N];
void solve(){int n;cin>>n;vector<int>v(n+1);int s=0;for(int i=1;i<=n;i++){cin>>v[i];if(v[i]==0){s++;}}if(s==n){cout<<n<<endl;return;}sort(v.begin()+1,v.end());int sum=0;for(int i=1;i<=n;i++){if(v[i]>sum+1){if(s>=2){cout<<n-i+1+s-1<<endl;}else{cout<<n-i+1<<endl;}return;}sum+=v[i];}cout<<0+s-1<<endl;
};
signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);TESTS{solve();};return 0;
}

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

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

相关文章

Educational Codeforces Round 186 C-F 个人题解

Educational Codeforces Round 186 C - Production of Snowmen给定三个分别有 $n$ 个元素的环 $a,b,c$,现在要选择一个三元组 $(i,j,k),1\le i,j,k\le n$,使得 $(a_i,b_j,c_k),(a_{i+1},b_{j+1},c_{k+1}),\cdots,(a_…

FPGA系统架构设计实践11_FPGA开机 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

文档翻译在高校中的应用

唐帕文档翻译在高校的应用&#xff1a;多元场景与价值提升 在全球化与知识共享加速的背景下&#xff0c;唐帕文档翻译在高等教育领域的作用日益凸显。高校作为学术研究、人才培养和国际交流的核心枢纽&#xff0c;对高效、精准的文档翻译有着广泛而深入的需求。其应用主要体现…

2026国内最新运动瑜伽面料品牌top10推荐!广东广州等地优质面料企业权威榜单发布,功能性与品质双优助力运动服饰升级. - 品牌推荐2026

随着健康生活方式的普及与运动服饰市场的蓬勃发展,运动瑜伽面料作为核心原材料,其功能性、舒适性与环保性成为品牌竞争的关键。据中国纺织工业联合会最新行业报告显示,2025年功能性运动面料市场规模突破800亿元,年…

从零开始配置neovim

前言 使用lazy配置neovim还算简单。 但由于许多插件和neovim本体更新迅速,许多教程已经过时(由于是新更新的,ai酱也不知道捏)。 整理一下配置过程。 init.lua 在配置目录下创建init.lua。 理论上只需要一个文件就能配…

2025年南京邮电大学计算机考研复试机试真题(解题思路 + AC 代码)

2025年南京邮电大学计算机考研复试机试真题 2025年南京邮电大学计算机考研复试上机真题 历年南京邮电大学计算机考研复试上机真题 历年南京邮电大学计算机考研复试机试真题 更多学校完整题目开源地址&#xff1a;https://gitcode.com/u014339447/pgcode 百度一下pgcode 即…

模组日志总体介绍

一、本文讨论的边界 本文是对合宙 4G 模组&#xff0c; 以及 4GGNSS 模组的日志功能的总体介绍。通过日志&#xff0c;可以对研发过程中&#xff0c;以及模组运行过程中的各种故障进行分析。二、4G 模组日志的几种类型 4G 模组的日志有两种类型&#xff1a; 业务日志和底层日…

sys系统消息

今天我们特别来讲一讲关于sys系统消息 1、DTIMER_WAKEUP deep sleep timer定时时间到回调 额外返回参数 无 例子 sys.subscribe("DTIMER_WAKEUP", function(timer_id)log.info("deep sleep timer", timer_id) end)2、YHM27XX_REG YHM27XX芯片寄存器…

3.手写线程池-C语言版

主要参考这篇文章进行学习https://subingwen.cn/linux/threadpool/ 开源地址https://github.com/r5ett/threadpool--C.git 1.线程池原理 在处理并发操作的时候,如果处理一个任务就是遇到一个任务就去创建一个线程,任…

如何克隆Demo代码仓库

今天我们特别将本章介绍给大家&#xff0c;带我们快速体验LuatOS的入门 一、背景介绍 这里&#xff0c;先要告诉你一些前提条件&#xff0c;希望你能够认真看一看这一节。 这个项目的产品定义是&#xff1a;模组每隔3秒&#xff0c;就往串口输出一次 “ hello world” 字符串…

高效筛选20w热点数据,从MySQL 2000w中精准提取

文章目录MySQL里有2000w数据&#xff0c;Redis中只存20w的数据&#xff0c;如何保证Redis中的数据都是热点数据&#xff1f;一、什么是热点数据&#xff1f;二、方法一&#xff1a;日志分析法1. 基本思路2. 实际操作3. 缺点三、方法二&#xff1a;实时统计法1. 基本思路2. 实际…

LuatOS-Air脚本移植到LuatOS版本注意事项

一、lua版本不一样 LuatOS-Air使用的是lua5.1版本&#xff0c;本身不支持位移运算符。 LuatOS使用的是lua5.3版本&#xff0c;取消了module(..., package.seeall)这种形式的跨文件调用。 二、api不同 首先说明&#xff0c;core和脚本有所不同&#xff0c;用户可以理解为&am…

AI搜索新趋势:品牌推广如何赢得DeepSeek等智能模型的青睐?

在生成式AI&#xff08;如DeepSeek、豆包、Kimi&#xff09;快速发展的今天&#xff0c;传统的搜索引擎优化&#xff08;SEO&#xff09;正在向生成式引擎优化&#xff08;GEO&#xff09;演进。品牌信息的传播逻辑发生了重要变化&#xff1a;不仅要争取在搜索结果中排名靠前&a…

一文搞定AI排名SEO的手段:从“反向提问”来优化AI排名

我们过去理解的谷歌排名&#xff0c;大致可以简化为一个公式&#xff1a; 谷歌理解用户的查询&#xff0c;理解你的网页内容&#xff0c;再结合一些外部信号&#xff08;比如外链&#xff09;&#xff0c;最后给出一个排名。 但在AI模式下&#xff0c;这个公式已经不够用了。…

【1 月小记】Part 5: DP 优化 - L

DP 优化 持续更新中…… 前缀和优化 P2513 [HAOI2009] 逆序对数列 这题不加优化也能过,难崩 考虑这个状态定义是怎么来的。倘若尝试将 \(n\) 排列的具体顺序融入状态定义会发现需要维护一个状压状的维度,数据范围太大…

AI搜索与消费者的未来:2026年需要关注的7个SEO领域

我们所熟知的搜索&#xff0c;正在以前所未有的速度发生改变&#xff0c;而2026年&#xff0c;或许就是它与过去彻底分道扬镳的一年。在过去的一年里&#xff0c;AI已经深刻地重塑了人们发现信息、做出决策乃至最终完成购买的整个过程。传统的消费者旅程正在被压缩&#xff0c;…

从抽检到全检,AI 正在如何改变工厂质量控制体系?

在相当长的一段时间里&#xff0c;抽检一直是制造业中被广泛采用、也被证明有效的质量控制方式。它成立的前提在于&#xff1a;质量风险可以通过概率模型被有效覆盖。但随着工厂规模扩大、产品型号增多、生产节拍加快&#xff0c;质量管理所面临的现实条件正在发生变化。当批次…

救命神器8个AI论文写作软件,专科生毕业论文救星!

救命神器8个AI论文写作软件&#xff0c;专科生毕业论文救星&#xff01; AI 工具让论文写作不再难 在当前的学术环境中&#xff0c;越来越多的继续教育学生面临着论文写作的压力。无论是专科生还是研究生&#xff0c;撰写一篇符合要求的论文都是一项既耗时又费力的任务。而随着…

通信原理篇---AM\DSB\SSB\VSB

我们先忘记公式和框图&#xff0c;用一个“声音快递”的比喻&#xff0c;把这几种调制方式的关系讲清楚。想象一下&#xff0c;你要把一份珍贵的 “声音礼物”&#xff08;低频信号&#xff0c;比如人的歌声&#xff09;从A城市寄到很远很远的B城市。直接邮寄是不行的&#xff…

教AI写漏洞代码,竟让它产生奴役人类幻想

《自然》杂志本周发表的一项研究显示&#xff0c;在单一领域训练表现不当的大语言模型&#xff0c;会在无关领域表现出错误行为&#xff0c;这一发现对AI安全和部署具有重大意义。独立科学家证明&#xff0c;当基于OpenAI GPT-4o的模型被微调以编写包含安全漏洞的代码时&#x…