笔试强训:Week-3 - 详解

news/2025/11/26 16:28:25/文章来源:https://www.cnblogs.com/ljbguanli/p/19273452

笔试强训:Week-3 - 详解

目录

一、牛牛冲钻五(模拟)

二、最长无重复子数组(滑动窗口)

三*、重排字符串(贪心)

四、乒乓球筐(哈希)

五?、组队竞赛(排序+贪心)

六、删除相邻数字的最大分数(多状态dp)

七*?、平方数(数学)

八?、分组(枚举+二分)

九*、【模板】拓扑排序(建图+多源bfs)

十、字符串替换(模拟)

十一*、神奇数(固定长度全排列)

十二、DNA序列(定长滑动窗口)

十三、小乐乐改数字(模拟)

十四、十字爆破(模拟)

十五、比那名居的桃子(定长滑动窗口)

十六、压缩字符串(一)

十七、chika和蜜柑(重写排序,自定义比较规则)

十八*、01背包


一、牛牛冲钻五(模拟)

牛牛冲钻五

#include 
using namespace std;
int main() {int T;cin>>T;while(T--){int n,k;cin>>n>>k;string str;cin>>str;int sum=0;for(int i=0;i=2&&str[i-1]=='W'&&str[i-2]=='W')sum+=k;else sum+=1;}else sum-=1;}cout<

二、最长无重复子数组(滑动窗口)

最长无重复子数组_牛客题霸_牛客网

注意hash的key值是in和out,老是写成left和right

class Solution {
public:int maxLength(vector& arr) {unordered_map hash;int ret=1,left=0,right=0,n=arr.size();if(n==0||n==1)return n;while(right1){int out=arr[left++];--hash[out];}ret=max(ret,right-left+1);++right;}return ret;}
};

三*、重排字符串(贪心)

重排字符串

优先处理出现次数最多的那个,每隔一个位置放一个,x<=(n+1)/2才可以排,否则直接cout<<"no"

#include
#include
using namespace std;
int main()
{int n;string s;cin>>n>>s;int MaxCount=0,hash[26]={0};char MaxChar;for(auto&ch:s){if(++hash[ch-'a']>MaxCount){MaxCount=hash[ch-'a'];MaxChar=ch;}}if(MaxCount>(n+1)/2)cout<<"no";else{cout<<"yes"<=n)index=1;s[index]=chr;index+=2;}}}cout<

四、乒乓球筐(哈希)

乒乓球筐__牛客网

先遍历s2,存进,然后遍历s1,最后再遍历26个字母,如果有剩下的就cout<<"No";

#include 
using namespace std;
int main() {string s1,s2;cin>>s1>>s2;int hash[26]={0};int n=s1.size(),m=s2.size();for(int i=0;i

或者先遍历s1,然后遍历s2,如果hash[]<0说明s1包不住s2,cout<<"No",此外,对于这种二元判断的,我们可以添加一个bool变量来实现cout哪个,这样就不用写两个return了

#include 
#include 
using namespace std;
int main() {string a,b;cin>>a>>b;int hash[26]={0};for(auto&ch:a) ++hash[ch-'A'];bool ret=true;for(auto&ch:b){if(--hash[ch-'A']<0){ret=false;break;}}cout<<(ret?"Yes":"No");return 0;
}

五?、组队竞赛(排序+贪心)

组队竞赛_牛客笔试题_牛客网

做错了,错误的以为是排序后从下标1开始+=3加到sum。

贪心的想,应该是排序后,因为我们得是第2大的,那么我们取数就得保证还有一个数比我大,那么我们从倒数第二的开始往前选,index-=2,找到n个,就是最大的。

#include 
#include 
using namespace std;
const int N=1e5+5;
int n;
long long a[N*3];
int main() {cin>>n;for(int i=0;i>a[i];sort(a,a+3*n);//从倒数第二个开始int pos=3*n-2;long long ret=0;//取n个while(n--){ret+=a[pos];pos-=2;}cout<

六、删除相邻数字的最大分数(多状态dp)

删除相邻数字的最大分数_牛客题霸_牛客网

没想到自己能想到这么做。

无非就是不能接着选的问题,遍历到i的时候无非就是i选和不选的问题,然后在dp[i-1]和dp[i-2]+count[i-2](伪)里找max。

我们将数据先存进count,count[某个数]=该数之和,建立映射关系,如果选了这个数,那么这个数-1/+1就不都不能选,相当于不能连续选的意思,接下来用这个数组取填dp表就行了。

#include 
using namespace std;
const int N=1e5+1;
int arr[N],count[N],dp[N];
int main() {int n;cin>>n;for(int i=0;i>arr[i];count[arr[i]]+=arr[i];}for(int i=2;i<=10001;++i){dp[i]=max(dp[i-1],dp[i-2]+count[i-1]);}cout<

七*?、平方数(数学)

平方数

这题没做出来,感觉自己废了。。。。

我现在在怀疑是不是int范围太小所以平方后溢出的问题,做的时候没有考虑这点忘记开longlong了

也有可能是二分判断时,mid*mid会溢出的问题,应该把其中一个mid除到另一边。唉修改了很多还是只能到百分之80.还是用sqrt函数吧服了

这里我又不服又试了新的解法,还是错了,算了老实用sqrt吧

sqrt(x);       #include<cmath>

#include
#include
using namespace std;
typedef long long LL;
int main(){LL x;cin>>x;LL a=sqrt(x);LL x1=a*a,x2=(a+1)*(a+1);if(x2-x>x-x1) cout<

八?、分组(枚举+二分)

分组

完全没思路X﹏X

看完解答后感觉是很有意思的二分题。

如果我们知道了最终的人数最多的小组的人数x,那么对于每个声部的人假设有a人可以分成

a/x+(a%x==0?0:1)组,然后计算所有声部总和是不是等于m即可。所以这种找值的题目先想想暴力是怎么做的,然后再思考更优解吧~~~~~~

从这点上进行二分,我们将二分修改左右边界的判断条件写成一个函数

#include
#include
using namespace std;
const int N=1e5+1;
int arr[N],n,m,hmax;
bool check(int mid,unordered_map hash)
{int groups=0;for(auto&[x,y]:hash){groups+=(y/mid+(y%mid==0?0:1));}return groups<=m;
}
int main()
{unordered_map hash;cin>>n>>m;for(int i=0;i>arr[i];++hash[arr[i]];if(hash[arr[i]]>hmax)hmax=hash[arr[i]];}int kinds=hash.size(),ret=0;if(kinds>m)cout<<-1;else{int left=1,right=hmax;while(left

九*、【模板】拓扑排序(建图+多源bfs)

【模板】拓扑排序_牛客题霸_牛客网

建图+多源bfs

说起来多源bfs解决拓扑排序系列最近才总结了,做题的有意识要用bfs但是已经忘记如何建图了,无命休矣。

原多源bfs解决拓扑排序,建图过程:unordered_map<int,vector<int>> hash :key->value

然后还需要额外创建一个数组统计入度,因为每层bfs我们处理的都是入度为0的点,开始bfs前先将所有入度为0的源点入队,然后每层dfs,取完队头元素,将队头元素指向的所有结点入度减去1,如果有变成入度为0的

最后return检查是不是还有入度为0的点,如果有就是有环,该题的话就是返回-1

复习完多源bfs解决拓扑排序,现在看看该题具体该如何解答,按照这个思路也是可行的开始写代码吧!

#include 
#include
#include
#include
using namespace std;
const int N=2e5+1;
int in[N];//处理入度
int main() {int n,m;cin>>n>>m;//建图unordered_map> hash;int x,y;while(m--){cin>>x>>y;hash[x].push_back(y);++in[y];}//入度为0的点入队queue q;for(int i=1;i<=n;++i){if(in[i]==0)q.push(i);}//bfsvector ret;while(!q.empty()){int t=q.front();ret.push_back(t);q.pop();for(auto&x:hash[t]){if(--in[x]==0)q.push(x);}}//检查是否有环// for(int i=1;i<=n;++i)// {//     if(in[i])//     {//         cout<<-1;//         break;//     }// }//其实也可以按照ret。size判断if(ret.size()!=n)cout<<-1;else{for(int i=0;i

明天继续加油o(* ̄︶ ̄*)o

书接上回~今天三道题都做出来了很开心哈哈

十、字符串替换(模拟)

很轻松的一道题

#include 
class Solution {
public:string formatString(string str, vector& arg) {string ret;int cur1=0,cur2=0;while(cur1

十一*、神奇数(固定长度全排列)

神奇数_牛客笔试题_牛客网

其实全排列用嵌套for循环就能直接实现了

标答,看来质数判断得学习一下

#include 
#include 
#include 
using namespace std;
bool isprimenum(int x){//判断该数是否是质数 用试除法if(x<2||x%2==0) return false;//偶数肯定不是质数int n=sqrt(x);for(int i=3;i<=n;i+=2)//奇数除以偶数肯定不能整除if(x%i==0) return false;return true;
}
bool check(int x){//判断是否是神奇数vector nums;while(x){nums.emplace_back(x%10);x/=10;}int n=nums.size();for(int i=0;i>a>>b;int ret=0;for(int i=max(10,a);i<=b;++i)if(check(i)) ++ret;cout<

本人写的

#include 
#include 
using namespace std;
const int N=1e5+1;
bool check[N];
int add,sum;
string path;
bool isPrime(int num)
{bool flag=true;for(int i=2;i>a>>b;for(int i=a;i<=b;++i){add=0;//如果是神奇数,add置为1isRightNum(to_string(i));sum+=add;}cout<

十二、DNA序列(定长滑动窗口)

DNA序列_牛客题霸_牛客网

写得和标答一样,不愧是我

#include 
#include 
using namespace std;
int main() {string s;int n;cin>>s>>n;//不能写等于,不然会输出两次s,一直没检查出来服了hhhif(n>s.size())cout<max){max=count;begin=left;}}while(rightmax){max=count;begin=left;}}cout<

十三、小乐乐改数字(模拟)

小乐乐改数字_牛客题霸_牛客网

#include 
#include 
using namespace std;
int main() {int n;cin>>n;string s=to_string(n);for(int i=0;i

十四、十字爆破(模拟)

十字爆破

牛牛咱下次别玩这么危险的游戏了好吗

long long格式化输出占位符是lld,不是d我服了。

#include 
#include
using namespace std;
int main() {int n,m;cin>>n>>m;vector> arr(n,vector(m));vector row(n);vector col(m);for(int i=0;i

十五、比那名居的桃子(定长滑动窗口)

比那名居的桃子

我服了,一直过不了,结果是int溢出了,以后遇到要算术运算操作的都开long long

#include 
#include 
using namespace std;
int main() {int n, k;cin >> n >> k;vector a(n), b(n);for (int i = 0; i < n; ++i) cin >> a[i];for (int i = 0; i < n; ++i) cin >> b[i];long long happy = 0, embrassment = 0;for (int i = 0; i < k; ++i) {happy += a[i];embrassment += b[i];}long long maxHappy = happy, minEmbra = embrassment;int ret = 0;int left = 0, right = k;while (right < n) {happy += a[right] - a[left];embrassment += b[right] - b[left];++right;++left;if (happy > maxHappy) {maxHappy = happy;minEmbra = embrassment;ret = left;}else if (happy == maxHappy && embrassment < minEmbra) {minEmbra = embrassment;ret = left;}}cout << ret + 1 << endl;return 0;
}

十六、压缩字符串(一)

压缩字符串(一)_牛客题霸_牛客网

#include 
class Solution {
public:string compressString(string param) {string ret;int cur=1,n=param.size(),count;if(n==0||n==1)return param;while(cur1)ret+=to_string(count);++cur;}//cur==n,末尾的没加上,如果末尾的加上了cur==n+1if(cur==n){ret+=param[cur-1];if(count>1)ret+=to_string(count);}return ret;}
};

十七、chika和蜜柑(重写排序,自定义比较规则)

chika和蜜柑

自定义比较方法

#include 
#include 
#include 
using namespace std;
#include
#include
using LL=long long;
struct cmp{bool operator()(pair&a,pair&b){//相等酸度降序排序if(a.first==b.first)return a.second>b.second;//按照甜度,升序排序return a.first>n>>k;vector Sour(n),Sweet(n);for(int i=0;i>Sour[i];for(int i=0;i>Sweet[i];//key:Sweet[i]->value:Sour[i]vector> Bind(n);for(int i=0;in-1-k;--i){SweetSum+=Bind[i].first;SourSum+=Bind[i].second;}cout<

十八*、01背包

01背包_牛客题霸_牛客网

已经忘了背包问题怎么写了。。。。

短短几行代码,看来要复习复习背包问题了/(ㄒoㄒ)/~~

class Solution {
public:int dp[1010]={0};int knapsack(int V, int n, vector >& vw) {//体积不超过V的情况下 当前能够装下的最大重量//dp[i][j]表示从前i个物品选,体积不超过j的最大重量for(int i=0;i=vw[i][0];--j)dp[j]=max(dp[j],dp[j-vw[i][0]]+vw[i][1]);return dp[V];}
};

本周笔试完结撒花!!!

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

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

相关文章

2025年深圳保税区一日游机构权威推荐榜单:综合保税区一日游‌/保税区域一日游‌/综合保税区域一日游源头机构精选

在粤港澳大湾区一体化进程加速的背景下,深圳保税区"一日游"业务以其高效便捷的通关模式,正成为企业优化供应链、降低运营成本的重要选择。 随着深圳外向型经济的持续发展,保税区域"一日游"业务…

2025年粉末冶金件夹爪供应商推荐:柔性抓取技术如何赋能精密制造

在当前制造业向智能化、柔性化加速转型的背景下,粉末冶金件因其高精度、复杂结构和优异性能,被广泛应用于汽车、3C电子、医疗器械等领域。然而,这类工件通常具有表面光洁度高、形状不规则、易划伤等特点,对自动化抓…

GPUStack v2:推理加速释放算力潜能,开源重塑大模型推理下半场

在大模型推理的下半场,GPUStack v2 不再是简单的模型服务平台,而是高性能推理生态的协调者与赋能者。关注🌟⌈GPUStack⌋ 💻一起学习 AI、GPU 管理与大模型相关技术实践。2025 年是大模型推理技术发展的关键之年…

2025年无花果酒产业链供应厂家深度解析:五家特色企业综合评测

一、摘要 随着大健康时代的到来和果酒消费热潮的兴起,无花果酒产业链正迎来前所未有的发展机遇。这一特色产业融合了传统农业与现代食品加工技术,形成了从种植到深加工的完整价值链。本文基于市场调研和行业数据分析…

2025年12月四川市政工程PE管行业厂家排行榜

2025年12月四川市政工程PE管行业厂家排行榜(数据来源:四川省建材工业协会 2025 年三季度报告、第三方检测机构抽检数据、企业公开资质)排名企业名称推荐指数口碑评分1四川欧宝路管业有限责任公司★★★★★9.8 分2四…

动态前瞻技术提升语音识别准确率

本文介绍了一种动态前瞻语音识别技术,通过自适应确定每个音频帧的前瞻长度,在保持低延迟的同时显著提升识别准确率。该方法在ICML会议上提出,相比固定前瞻模型能更好地平衡准确性与实时性需求。动态前瞻技术如何提升…

2025年水果分拣柔性夹爪厂家推荐:苏州柔触机器人科技引领无损抓取新趋势

在当前智能制造快速发展的背景下,水果分拣作为农产品加工的关键环节,正面临自动化升级的迫切需求。传统人工分拣不仅效率低、成本高,还容易因操作不当造成水果表皮损伤,影响商品价值。而柔性夹爪技术的出现,为这一…

2025 年最新推荐制氧机厂家排行榜,家用 / 工业 / 便携式制氧机专业品牌精选云南呼吸机/昆明呼吸机厂家推荐

引言 随着全球人口老龄化加剧及呼吸系统相关健康问题的频发,制氧机作为关键的医疗辅助设备,市场需求持续增长。据国际医疗设备协会最新测评数据显示,全球制氧机市场中,仅 30% 的服务商完全符合国际医疗设备质量标准…

2025 最新烟囱施工单位口碑排行榜:技术革新 + 快速响应企业权威推荐烟囱刷航标/绘画/拆除/安装/加固/维修/新建/彩绘公司推荐

引言 高空烟囱工程是工业生产与基础设施安全运行的核心保障,其施工质量直接关联企业安全生产合规、环境达标及运营稳定性。当前市场中,资质参差不齐、技术落后、响应迟缓等问题频发,部分企业因选择不当面临工程返工…

2025年无线投屏产品推荐:从专业到家用,全方位解析,精准避坑

在数字化协作日益普及的今天,无线投屏技术已成为企业会议室、教室、家庭娱乐中不可或缺的桥梁。无论是商务演示、团队协作还是家庭观影,一款优秀的无线投屏产品能够显著提升效率与体验。 据 QYResearch 研究报告显示…

本杰明富兰克林和静电

本杰明富兰克林和静电本杰明富兰克林和静电了解电的基本原理有助于学习电子学,电路设计,电力工程等。让我们从本杰明富兰克林发现静电的故事说起。不是那个更著名的风筝捕电的故事。我要谈谈他用丝绸和毛皮摩擦玻璃和…

PostgreSQL插件

如何查看扩展当前实例支持的扩展:pg_available_extensions 列出可用扩展(在安装包里有 .control 文件的扩展),这是服务器级别的。当前数据库里已安装的扩展:pg_extension 或者 \dx。注意,如果需要扩展可用,但每…

从 50 步到 4 步:LightX2V 如何把视频生成拉进20 秒时代?

从 50 步到 4 步:LightX2V 如何把视频生成拉进20 秒时代? 还在为高质量视频生成「又慢又重」头疼吗? 传统扩散式视频生成模型往往需要20~50步迭代过程,即便生成几十帧的短视频,也需长时间占用GPU资源,日志持续输…

基于MATLAB的Tent映射参数化三维轨迹可视化实现

一、算法原理与参数影响 Tent映射的数学表达式为:其中参数μ∈(0,1)控制映射的非线性特性:μ=0.5时对称性最佳,遍历性最强 μ→0时呈现左偏震荡 μ→1时趋近于右偏线性映射二、三维轨迹生成函数实现 function tent_…

保存文件到当前目录

要将文件生成在与程序相同的文件夹下,只需将绝对路径改为相对路径。以下是修改后的代码: import os # 导入os模块if event == 保存:# 获取当前脚本所在目录,并拼接文件名file_path = os.path.join(os.path.dirname…

2025 年冷却塔施工单位最新推荐榜,聚焦技术创新与服务品质的优质企业深度解析冷却塔美化/冷却塔防腐/冷却塔彩绘/冷却塔维修/冷却塔绘画公司推荐

引言 冷却塔作为工业生产核心配套设施,其防腐、维修、美化等施工质量直接决定设备运行效率与生产安全。当前行业面临能效标准升级、场景需求分化、售后体系缺失等多重挑战,而资质不齐、工艺落后、响应迟缓等问题仍较…

2025年北京徒手私密培训公司权威推荐榜单:男性生殖保健按摩培训‌/男性私密培训‌/私密培训源头公司精选

在男性健康管理意识不断提升的背景下,专业的徒手私密培训服务正以其规范化的技术体系和显著的经营赋能效果,成为健康服务领域的新兴增长点。 徒手私密培训通过专业的技术教学和系统的运营支持,帮助从业者提升专业技…

2025 年石材养护服务商最新推荐榜,技术实力与市场口碑深度解析,专业服务与长效保障兼具的优质品牌大理石石材翻新/石材维保托管/石材结晶/石材维修病变治理/石材清洗防护/石材仿古处理公司推荐

引言 石材作为高端建筑与商业空间的核心装饰材料,其养护质量直接关乎空间美学与资产价值,而高频使用场景下的磨损、病变等问题更对服务商提出严苛要求。本次推荐榜基于国际石材养护协会(ISCA)最新测评数据,结合近…

PySimpleGUI 如何设置事件的监听器

在 PySimpleGUI 中,事件的监听主要通过 window.read() 方法结合事件循环实现。以下是详细说明和示例:1. 基本事件监听流程 PySimpleGUI 的事件监听基于 事件驱动模型,核心步骤如下:创建窗口和控件,为需要监听的控…

2025 年 11 月中央空调租赁厂家权威推荐榜:大型中央空调/厂房空调/商场写字楼空调/工业大功率空调,专业租赁服务与高效节能解决方案精选

2025 年 11 月中央空调租赁厂家权威推荐榜:大型中央空调/厂房空调/商场写字楼空调/工业大功率空调,专业租赁服务与高效节能解决方案精选 行业背景与发展趋势 随着我国经济结构持续优化和产业升级步伐加快,中央空调租…