笔试强训:Day3

一、牛牛冲钻五(模拟)

登录—专业IT笔试面试备考平台_牛客网

#include<iostream>
using namespace std;
int main(){int t,n,k;string s;cin>>t;while(t--){cin>>n>>k>>s;int ret=0;//统计加了多少星for(int i=0;i<n;++i)if(s[i]=='L') --ret;else if(i-1>=0&&i-2>=0&&s[i-1]=='W'&&s[i-2]=='W') ret+=k;else ++ret;cout<<ret<<endl;}
}

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

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

class Solution {
public:int hash[100001];//标记重复数int maxLength(vector<int>& arr) {int n=arr.size();int ret=0;for(int left=0,right=0;right<n;++right){++hash[arr[right]];while(hash[arr[right]]>1) --hash[arr[left++]];ret=max(ret,right-left+1);//求最大 不需要在while里面更新 求最小才需要}return ret;}
};

三、重排字符串(贪心)

登录—专业IT笔试面试备考平台_牛客网

//该题就是贪心 要先统计数量最多的那个
#include<iostream>
#include<string>
using namespace std;
int main(){int n;string s;cin>>n>>s;int hash[26]={0};//统计字符char maxchar;//记录最大字符int maxcount=0;//以及他的最大数量for(auto&ch:s)if(++hash[ch-'a']>maxcount){//找到更大的就更新一下maxcount=hash[ch-'a'];maxchar=ch;}//这个时候我们先看看是否超过了if(maxcount>(n+1)/2) cout<<"no"<<endl;else{cout<<"yes"<<endl;//开始按顺序填那个最多的int index=0;while(maxcount--){s[index]=maxchar;index+=2;}//继续填剩下的for(int i=0;i<26;++i)if(hash[i]&&i!=maxchar-'a')while(hash[i]--){if(index>=n) index=1;s[index]=i+'a';index+=2;}cout<<s<<endl;}
}

四、乒乓球筐(哈希)

乒乓球筐__牛客网

#include <iostream>
#include <string>
using namespace std;int main() {string a,b;while(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")<<endl;//多组 不能return 那就用一个bool值}
}
// 64 位输出请用 printf("%lld")

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

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

#include <iostream>
#include <algorithm>
using namespace std;
const int N=1e5+5;
int n;
long long a[N*3];
int main() {cin>>n;for(int i=0;i<n*3;++i) cin>>a[i];sort(a,a+3*n);//排序之后 我们就取倒数第二个人的成绩int pos=3*n-2,count=0;long long ret=0;while(++count<=n){ret+=a[pos];pos-=2;}cout<<ret<<endl;
}
// 64 位输出请用 printf("%lld")

六、删除相邻数字的最大分数(预处理+状态dp)

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

#include <iostream>
using namespace std;
//状态dp 也就是不可同时取
const int N=1e4+1;
int sum[N],f[N],g[N];//第一个是总和数组 第二个是i位置选了的dp数组  第二个是i位置不选的dp数组
int n;
int main() {cin>>n;int x;while(n--){cin>>x;sum[x]+=x;}//然后进行dpfor(int i=1;i<N;++i){f[i]=g[i-1]+sum[i];//当前位置选了g[i]=max(f[i-1],g[i-1]);//当前位置没选}cout<<max(f[N-1],g[N-1])<<endl;
}
// 64 位输出请用 printf("%lld")

七、平方数(数学)

登录—专业IT笔试面试备考平台_牛客网

#include<iostream>
#include<cmath>
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<<x1<<endl;else cout<<x2<<endl;
}

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

登录—专业IT笔试面试备考平台_牛客网

#include<iostream>
#include<unordered_map>
using namespace std;
int n,m;
unordered_map<int,int> cnt;//统计各个声部各有多少人数
bool check(int x){//查看每组最多x人的时候最少能分几组int g=0;for(auto&[a,b]:cnt)g+=b/x+(b%x!=0);return g<=m;
}
int main(){cin>>n>>m;int x;int hmax=0;//统计最多人数的声部for(int i=0;i<n;++i){cin>>x;hmax=max(hmax,++cnt[x]);}int kinds=cnt.size();//有多少种类if(kinds>m) cout<<-1<<endl;//种类太多的话就无法安排else{
//         for(int i=1;i<=hmax;++i) 暴力枚举 
//             if(check(i)){
//                 cout<<i<<endl;
//                 break;
//             }//二分int left=1,right=hmax;while(left<right){//左区间端点法int mid=left+(right-left)/2;if(check(mid)) right=mid;else left=mid+1;}cout<<left<<endl;}
}

九、【模板】拓扑排序

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

#include <iostream>
#include <vector>
#include <queue>
using namespace std;
const int N=2e5+1;
int in[N];//统计入度信息
vector<vector<int>> edges(N);//每个点对应边的集合
queue<int> q;//进行bfs
vector<int> ret;//获取最终结果
int n,m,a,b;
int main() {cin>>n>>m;while(m--){//开始建图cin>>a>>b;edges[a].emplace_back(b);++in[b];//统计入度信息}//此时图建完了 然后开始把所有入度为0的点都丢进去for(int i=1;i<=n;++i)if(in[i]==0) q.push(i);//开始进行bfswhile(!q.empty()){int a=q.front();ret.emplace_back(a);q.pop();//把跟t有关的入度删了for(auto&b:edges[a])if(--in[b]==0) q.push(b);}//检查一下是否符合要求if(ret.size()!=n) cout<<-1;//说明不是有向无环图else{for(int i=0;i<n-1;++i) cout<<ret[i]<<" ";cout<<ret[n-1];}
}
// 64 位输出请用 printf("%lld")

十、字符串替换(模拟)

字符串替换_牛客题霸_牛客网

class StringFormat {
public:string formatString(string A, int n, vector<char> arg, int m) {string ret;int j=0;//用来标记参数列表for(int i=0;i<n;++i)if(A[i]=='%'){ret+=arg[j++];++i;}else ret+=A[i];while(j<m) ret+=arg[j++];return ret; }
};

十一、**神奇数(数学)

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

 

#include <iostream>
#include <cmath>
#include <vector>
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<int> nums;while(x){nums.emplace_back(x%10);x/=10;}int n=nums.size();for(int i=0;i<n;++i)//枚举十位数 for(int j=0;j<n;++j)//枚举个位数if(i!=j&&nums[i]!=0&&isprimenum(nums[i]*10+nums[j]))return true;return false;
}
int a, b;
int main() {cin>>a>>b;int ret=0;for(int i=max(10,a);i<=b;++i)if(check(i)) ++ret;cout<<ret<<endl;
}
// 64 位输出请用 printf("%lld")

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

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

#include <iostream>
#include <string>
using namespace std;
string s;
int N;//限定子串的长度
int main() {cin>>s>>N;int maxCount=0;//用来统计最大的countint Count=0;//用来统计窗口里的c+gint begin=-1;//用来统计初始位置int n=s.size();int left=0,right=0;//滑动窗口for(;right<N-1;++right)  //先把前n-1个进去Count+=(s[right]=='C'||s[right]=='G');for(;right<n;++right,++left){Count+=(s[right]=='C'||s[right]=='G');if(Count>maxCount){maxCount=Count;begin=left;}Count-=(s[left]=='C'||s[left]=='G');}cout<<s.substr(begin,N)<<endl;
}
// 64 位输出请用 printf("%lld")

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

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

#include <iostream>
#include <string>
using namespace std;
//'A' 的 ASCII 码是 65
//'a' 的 ASCII 码是 97
//'0' 的 ASCII 码是 48
//' ' (空格) 的 ASCII 码是 32
string s;
int main() {cin>>s;for(auto&ch:s)if(ch&1) ch='1';else ch='0';cout<<stoi(s)<<endl;//自动处理前导零
}
// 64 位输出请用 printf("%lld")

十四、*十字爆破(预处理+模拟)

登录—专业IT笔试面试备考平台_牛客网

 

//可以提前把每行每列的值都给他存起来
#include<iostream>
using namespace std;
const int N=1e6+1;
typedef long long LL;
LL row[N],col[N];//统计每行每列的值
int n,m;
int main(){scanf("%d %d",&n,&m);LL nums[n][m];//这个用NN建的话空间太大了 for(int i=0;i<n;++i)for(int j=0;j<m;++j){scanf("%lld",&nums[i][j]);row[i]+=nums[i][j];col[j]+=nums[i][j];}//开始尝试打印for(int i=0;i<n;++i){for(int j=0;j<m;++j)printf("%lld ",row[i]+col[j]-nums[i][j]);printf("\n");}
}

十五、**比那名居的桃子(定长滑动窗口/前缀和)

登录—专业IT笔试面试备考平台_牛客网

解法1:定长滑动窗口 

#include<iostream>
using namespace std;
typedef long long LL;
const int N=1e5+10;
LL h[N],s[N];
int n,k;
//滑动窗口 维护一个k长度的区间
int main(){cin>>n>>k;for(int i=1;i<=n;++i) cin>>h[i];for(int i=1;i<=n;++i) cin>>s[i];//先让前面k-1个进去int left=1,right=1;//滑动窗口LL hsum=0,ssum=0,hmax=0,smin=0,begin=0;for(;right<k;++right){hsum+=h[right];ssum+=s[right];}for(;right<=n;++left,++right){hsum+=h[right];ssum+=s[right];if(hsum>hmax){//如果快乐值更多 就得更新begin=left;hmax=hsum;smin=ssum;}else if(hsum==hmax&&ssum<smin){//如果快乐值一样 羞耻值少 也得更新begin=left;smin=ssum;}//出窗口hsum-=h[left];ssum-=s[left];}cout<<begin<<endl;
}

 解法2:前缀和

#include<iostream>
using namespace std;
typedef long long LL;
const int N=1e5+10;
LL h[N],s[N];
int n,k;
//滑动窗口 维护一个k长度的区间
int main(){cin>>n>>k;int x;for(int i=1;i<=n;++i){cin>>x;h[i]=h[i-1]+x;}for(int i=1;i<=n;++i){cin>>x;s[i]=s[i-1]+x;}//先让前面k-1个进去LL hmax=0,smin=0,begin=0;for(int i=k;i<=n;++i)if(h[i]-h[i-k]>hmax){begin=i-k+1;hmax=h[i]-h[i-k];smin=s[i]-s[i-k];}else if(h[i]-h[i-k]==hmax&&s[i]-s[i-k]<smin){begin=i-k+1;smin=s[i]-s[i-k];}cout<<begin<<endl;
}

十六、压缩字符串1(双指针)

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

class Solution {
public:string compressString(string param) {int n=param.size();if(n<2) return param;string ret;//处理返回结果for(int i=0;i<n;){int j=i+1,count=1;while(j<n&&param[j]==param[i]){++j;++count;}ret+=param[i];if(count>1) ret+=to_string(count);i=j;}return ret;}
};

十七、**chika和蜜柑(重写排序)

登录—专业IT笔试面试备考平台_牛客网

#include<iostream>
#include<algorithm>
using namespace std;
const int N=2e5+10;
typedef long long LL;
typedef pair<LL,LL> PLL;
PLL a[N];//酸度和甜度的数组
int n,k;
int main(){cin>>n>>k;for(int i=0;i<n;++i) cin>>a[i].first;for(int i=0;i<n;++i) cin>>a[i].second;sort(a,a+n,[&](const PLL&a,const PLL&b){return a.second==b.second?a.first<b.first:a.second>b.second; });LL s=0,t=0;for(int i=0;i<k;++i){s+=a[i].first;t+=a[i].second;}cout<<s<<" "<<t<<endl;
}

十八、01背包

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

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

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

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

相关文章

语音识别质量的跟踪

背景 这个项目是用来生成结构化的电子病历的。数据的来源是医生的录音。中间有一大堆的处理&#xff0c;语音识别&#xff0c;关键字匹配&#xff0c;结构化处理&#xff0c;病历编辑......。最多的时候给上百家医院服务。 语音识别质量的跟踪 一、0225医院的训练后的情况分…

人工智能搜索时代的SEO:关键趋势与优化策略

随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;搜索引擎的运作方式正在经历前所未有的变革。2025年&#xff0c;AI驱动的搜索&#xff08;如谷歌的AI概览、ChatGPT搜索和必应的AI增强功能&#xff09;不仅改变了用户获取信息的方式&#xff0c;还为SEO从业…

Node.js心得笔记

npm init 可用npm 来调试node项目 浏览器中的顶级对象时window <ref *1> Object [global] { global: [Circular *1], clearImmediate: [Function: clearImmediate], setImmediate: [Function: setImmediate] { [Symbol(nodejs.util.promisify.custom)]: [Getter] }, cl…

计算机网络01-网站数据传输过程

局域网&#xff1a; 覆盖范围小&#xff0c;自己花钱买设备&#xff0c;宽带固定&#xff0c;自己维护&#xff0c;&#xff0c;一般长度不超过100米&#xff0c;&#xff0c;&#xff0c;带宽也比较固定&#xff0c;&#xff0c;&#xff0c;10M&#xff0c;&#xff0c;&…

Mysql常用函数解析

字符串函数 CONCAT(str1, str2, …) 将多个字符串连接成一个字符串。 SELECT CONCAT(Hello, , World); -- 输出: Hello World​​SUBSTRING(str, start, length) 截取字符串的子串&#xff08;起始位置从1开始&#xff09;。 SELECT SUBSTRING(MySQL, 3, 2); -- 输出: SQ…

SpringMVC 前后端数据交互 中文乱码

ajax 前台传入数据&#xff0c;但是后台接收到的数据中文乱码 首先我们分析一下原因&#xff1a;我们调用接口的时候传入的中文&#xff0c;是没有乱码的 此时我们看一下Java后台接口对应的编码&#xff1a; 默认情况&#xff1a;Servlet容器&#xff08;如Tomcat&#xff09;默…

loads、dumps、jsonpath使用场景

在处理JSON数据时&#xff0c;loads、dumps 和 jsonpath 是三个非常有用的工具或概念。它们各自在不同的场景下发挥作用&#xff0c;让我们一一来看&#xff1a; 1. loads loads 函数是 Python 中 json 模块的一部分&#xff0c;用于将 JSON 格式的字符串解析成 Python 的数据…

Java学习手册:Spring 事务管理

一、事务管理的概念 事务是一组操作的集合&#xff0c;这些操作要么全部成功&#xff0c;要么全部失败。事务管理的目的是保证数据的一致性和完整性。在数据库操作中&#xff0c;事务管理尤为重要&#xff0c;例如银行转账、订单支付等场景都需要事务管理来确保数据的正确性。…

echarts自定义图表--柱状图-横向

区别于纵向表格 xAxis和yAxis对调 要将label全部固定到最右侧&#xff1a; 隐藏一个柱形 为每个label设置固定的偏移距离 offset: [300 - 80, 0] 在data中加入label的配置 根据现在的值生成距离右侧的偏移 更新方法 chart.setOption({series: [{},{data: data.map(v > ({v…

【CV数据集】Visdrone2019无人机目标检测数据集(YOLO、VOC、COCO格式)

visdrone2019的Task1是非常通用的目标检测数据集&#xff0c;也是许多人做目标检测论文和项目必然会用到的数据集&#xff0c;我将该数据集进行了处理&#xff0c;将其YOLO、VOC和COCO格式都整理好&#xff0c;通过下载我整理好的数据集和相关文件&#xff0c;可以直接在自己的…

常见电源的解释说明

英文缩写 BJT&#xff08;bipolar junction transistor&#xff09;双极型结晶体管FET&#xff08;field-effect transistor&#xff09;场效应管TTL&#xff08;Transistor-Transistor Logic&#xff09;三极管CMOS&#xff08;Complementary Metal Oxide Semiconductor&…

【2025年五一数学建模竞赛】A题 解题思路与模型代码

2025年五一数学建模竞赛 A题 问题一&#xff1a;推测支路 1 和支路 2 的车流量 1.1 问题描述 根据提供的主路历史数据以及已知的支路车流量变化趋势&#xff08;支路1呈线性增长&#xff0c;支路2先线性增长后线性减少&#xff09;&#xff0c;推测这两个支路在特定时间段&a…

d202551

目录 一、175. 组合两个表 - 力扣&#xff08;LeetCode&#xff09; 二、511. 游戏玩法分析 I - 力扣&#xff08;LeetCode&#xff09; 三、1204. 最后一个能进入巴士的人 - 力扣&#xff08;LeetCode&#xff09; 一、175. 组合两个表 - 力扣&#xff08;LeetCode&#xf…

RISC-V AIA SPEC学习(四)

第五章 Interrupts for Machine andSupervisor Levels 核心内容​​ 1.主要中断类型与默认优先级:​​ 定义了机器级别(M-level)和监管者级别(S-level)的标准中断类型(如MEI、SEI、MTI等)。默认优先级规则:本地中断(如软件/定时器)优先级高于外部中断,RAS事件(如低/高…

WSGI(Web Server Gateway Interface)服务器

0、什么是 WSGI WSGI &#xff08;Web Server Gateway Interface&#xff09; 是一种Python规范&#xff0c;它定义了 Web 服务器 和 Python Web 应用程序之间的通信接口。 即&#xff0c;能够让各种 Web 服务器&#xff08;如 Nginx、Apache 等&#xff09;和 Python Web 框架…

博客打卡-人类基因序列功能问题动态规划

题目如下&#xff1a; 众所周知&#xff0c;人类基因可以被认为是由4个核苷酸组成的序列&#xff0c;它们简单的由四个字母A、C、G和T表示。生物学家一直对识别人类基因和确定其功能感兴趣&#xff0c;因为这些可以用于诊断人类疾病和设计新药物。 生物学家确定新基因序列功能…

基本功能学习

一.enum枚举使用 E_SENSOR_REQ_NONE 的定义及用途 在传感器驱动开发或者电源管理模块中&#xff0c;E_SENSOR_REQ_NONE通常被用来表示一种特殊的状态或请求模式。这种状态可能用于指示当前没有活动的传感器请求&#xff0c;或者是默认初始化状态下的一种占位符。 可能的定义…

vitest | 测试框架vitest | 总结笔记

目录 测试框架 vitest 介绍 测试文件的写法 文件取名&#xff1a;文件名中要有 test&#xff0c;即 xxx.test.ts 引入库&#xff1a; test 测试&#xff1a; 测试运行&#xff1a; npx test 文件名 &#xff0c;每次保存后会重新运行。 ★ expect 方法&#xff1a; v…

ESP32开发-作为TCP客户端发送数据到网络调试助手

​​代码&#xff08;作为TCP客户端&#xff09;​​ #include <SPI.h> #include <EthernetENC.h> // 使用EthernetENC库// 网络配置 byte mac[] {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // MAC地址 IPAddress ip(192, 168, 1, 100); // ESP32的IP IPAddr…

HTML5 WebSocket:实现高效实时通讯

一、引言 在当今的 Web 开发领域,实时通讯功能变得越来越重要。例如在线聊天、实时数据更新等场景都需要客户端与服务器之间能够进行高效的双向数据传输。HTML5 引入的 WebSocket 协议为我们提供了一种强大的解决方案,它在单个 TCP 连接上实现了全双工通讯,极大地改善了传统…