笔试强训:Day6

article/2025/7/28 10:53:04

一、小红的口罩(贪心+优先级队列)

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

 

#include<iostream>
#include<queue>
#include<vector>
using namespace std;
int n,k;
int main(){//用一个小根堆  每次使用不舒适度最小的cin>>n>>k;int x;priority_queue<int,vector<int>,greater<int>> heap;for(int i=0;i<n;++i){cin>>x;heap.push(x);}//开始循环int sum=0,ret=0;while(sum<=k){int t=heap.top();heap.pop();sum+=t;heap.push(t*2);++ret;}cout<<ret-1<<endl;
}

二、*春游(分类讨论+数学)

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

#include<iostream>
#include<cmath>
using namespace std;
typedef long long LL;
LL t,n,a,b;
LL func(){if(n<=2) return min(a,b);//做便宜的船if(a>=b) return (LL)ceil(n/3.0)*b;LL ret=0;if(a*3<b*2){//说明双人船便宜 尽量选择双人船ret+=n/2*a;if(n%2==1) ret+=min(a,b-a);//多1个人 看看是要直接租双人 还是退掉一个双人租三人}else{//说明要尽可能租三人船  b*2<=a*3 有可能b更便宜ret+=n/3*b;//此时可能剩1个人或者2个人n%=3;if(n==1) ret+=min(a,2*a-b);if(n==2) ret+=a;}return ret;
}
int main(){cin>>t;while(t--){cin>>n>>a>>b;cout<<func()<<endl;}
}

三、数位染色(01背包)

数位染色_牛客题霸_牛客网

#include <iostream>
using namespace std;
const int N=20,M=10*9;//记录所有数位
bool dp[M];//前i个数选 和恰好为target
int arr[N];//标记各个数位
long long x;
int n=0;//统计有多少位
int sum=0;//统计总和
bool func(){if(sum%2==1) return false;sum/=2;dp[0]=true;for(int i=0;i<n;++i)for(int j=sum;j>=arr[i];--j)dp[j]=dp[j]||dp[j-arr[i]];return dp[sum]; 
}
int main() {cin>>x;while(x){arr[n++]=x%10;sum+=x%10;x/=10;}if(func()) cout<<"Yes"<<endl;else cout<<"No"<<endl;
}

 四、素数回文(数学+模拟)

素数回文_牛客题霸_牛客网

#include <iostream>
#include <string>
#include <cmath>
using namespace std;string s;
bool isprim(long long x){if(x==2) return true;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; 
}
int main() {cin>>s;s.reserve(s.size()*2);for(int i=s.size()-2;i>=0;--i) s+=s[i];if(isprim(stoll(s))) cout<<"prime"<<endl;else cout<<"noprime"<<endl;
}

五、活动安排(左区间端点排序+贪心)

活动安排_牛客题霸_牛客网

#include <iostream>
#include <algorithm>
using namespace std;
typedef pair<int,int> PII;
const int N=2e5+1;
int n;
PII arr[N];
int main() {cin>>n;for(int i=0;i<n;++i) cin>>arr[i].first>>arr[i].second;sort(arr,arr+n);int ret=0,right=arr[0].second;for(int i=1;i<n;++i) //如果有重叠 保留右侧最小的if(arr[i].first<right) right=min(right,arr[i].second);else{//如果没有重叠 就更新一下 然后++ret++ret;right=arr[i].second;}cout<<ret+1<<endl;
}

六、**合唱团(多维状态dp)

合唱团_牛客题霸_牛客网

#include <iostream>
using namespace std;
typedef long long LL;
const int N=55,M=15;
const LL INF=0x3f3f3f3f3f3f3f3f;
int n,k,d;
LL arr[N],f[N][M],g[N][M]; //N和n有关系 M和k有关系
//该题的动归需要限制i位置必须选  因为有限制条件d
//f[i][j]表示从前i个挑选j个 且i位置必须选 的最大乘积
//g[i][j]表示从前i个挑选j个 且i位置必须选 的最小乘积
int main() {cin>>n;for(int i=1;i<=n;++i) cin>>arr[i];cin>>k>>d;for(int i=1;i<=n;++i){//填写每一行f[i][1]=g[i][1]=arr[i];for(int j=2;j<=min(k,i);++j){f[i][j]=-INF;g[i][j]=INF;for(int prev=max(i-d,j-1);prev<=i-1;++prev){f[i][j]=max(max(f[prev][j-1]*arr[i],g[prev][j-1]*arr[i]),f[i][j]);g[i][j]=min(min(f[prev][j-1]*arr[i],g[prev][j-1]*arr[i]),g[i][j]);}}}LL ret=-INF;for(int i=k;i<=n;++i) ret=max(ret,f[i][k]);cout<<ret<<endl;
}

七、*青蛙跳台阶问题(规律)

跳台阶扩展问题_牛客题霸_牛客网

#include <iostream>
using namespace std;int main() {int n;cin>>n;cout<<(1<<(n-1))<<endl;
}

 八、包含不超过两种字符的最长子串(滑动窗口)

包含不超过两种字符的最长子串_牛客题霸_牛客网

#include <iostream>
#include <string>
using namespace std;
string s;
int main() {cin>>s;int n=s.size();int kinds=0;//记录种类int hash[26]={0};int ret=2;for(int left=0,right=0;right<n;++right){if(hash[s[right]-'a']++==0) ++kinds;while(kinds>2) if(--hash[s[left++]-'a']==0) --kinds;ret=max(ret,right-left+1);}cout<<ret<<endl;
}

九、字符串的排列(排序+dfs)

字符串的排列_牛客题霸_牛客网

class Solution {public:vector<string> ret;string path;bool check[10] = {0};void dfs(string s) {if (path.size() == s.size()) {ret.emplace_back(path);return;}for (int i = 0; i < s.size(); ++i) {if(check[i]||i>0&&s[i-1]==s[i]&&!check[i-1])  continue;//但是前面的数没选path.push_back(s[i]);check[i] = true;dfs(s);path.pop_back();check[i] = false;}}vector<string> Permutation(string str) {if (str.empty()) return {};//要去重 所以排序一下sort(str.begin(), str.end());//保证相同的放在一起dfs(str);return ret;}
};

 十、[NOIP2008]ISBN号码(模拟)

[NOIP2008]ISBN号码_牛客题霸_牛客网

#include <iostream>
#include <string>
#include <cctype>
using namespace std;
string s;
int main() {cin>>s;int n=s.size();int sum=0;int count=1;//乘数for(int i=0;i<n-2;++i)if(isdigit(s[i])) sum+=(s[i]-'0')*count++;sum%=11;if(sum==s[n-1]-'0'||sum==10&&s[n-1]=='X')cout<<"Right"<<endl;else{s[n-1]=sum==10?'X':sum+'0';cout<<s<<endl;}
}

十一、kotori和迷宫(单源最短路bfs)

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

#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
const int N=32;
int n,m;
int x1,y1;//起点位置
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
char arr[N][N];//迷宫
int dis[N][N];//不仅标记是否搜索过,也标记最短距离
queue<pair<int,int>> q;//用来BFS
//单源最短路问题
int main(){cin>>n>>m;for(int i=1;i<=n;++i)for(int j=1;j<=m;++j){cin>>arr[i][j];if(arr[i][j]=='k') x1=i,y1=j;}memset(dis,-1,sizeof dis);//表示没搜索过//开始进行最短路问题q.emplace(x1,y1);dis[x1][y1]=0;while(!q.empty()){auto[a,b]=q.front();q.pop();for(int k=0;k<4;++k){int x=dx[k]+a,y=dy[k]+b;if(x>=1&&x<=n&&y>=1&&y<=m&&dis[x][y]==-1&&arr[x][y]!='*'){dis[x][y]=dis[a][b]+1;if(arr[x][y]!='e') q.emplace(x,y);}}}//搜索结束  我们就开始遍历dis找最近出口步数 和可到达的出口int count=0,ret=0x3f3f3f3f;for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)if(arr[i][j]=='e'&&dis[i][j]!=-1){++count;ret=min(ret,dis[i][j]);}if(count==0) cout<<-1<<endl;else cout<<count<<" "<<ret<<endl;
}

十二、矩阵最长递增路径(dfs+记忆化)

矩阵最长递增路径_牛客题霸_牛客网

    int m,n;int memo[1010][1010]={0};int dx[4]={0,0,1,-1};int dy[4]={1,-1,0,0};int dfs(vector<vector<int>>& matrix,int i,int j){if(memo[i][j]) return memo[i][j];int len=1;for(int k=0;k<4;++k){int x=dx[k]+i,y=dy[k]+j;if(x>=0&&x<m&&y>=0&&y<n&&matrix[x][y]>matrix[i][j]) len=max(len,1+dfs(matrix,x,y));}return memo[i][j]=len;}int solve(vector<vector<int>>& matrix) {m=matrix.size(),n=matrix[0].size();int ret=1;for(int i=0;i<m;++i)for(int j=0;j<n;++j)ret=max(ret,dfs(matrix,i,j));return ret;}
};

十三、奇数位丢弃(找规律)

奇数位丢弃_牛客题霸_牛客网

#include <iostream>
using namespace std;int main() {int n;while(cin>>n){int ret=1;while(ret-1<=n) ret*=2;cout<<ret/2-1<<endl;}
}

十四、*求和(dfs)

求和__牛客网

该题没有顺序问题,所以可以用选or不选做 

#include <iostream>
using namespace std;
bool vis[11];//标记数组
int n,m;
int sum;//统计已选数字的总和
void dfs(int pos){if(sum==m){for(int i=1;i<=n;++i)if(vis[i]) cout<<i<<" ";cout<<endl;return;}if(sum>m||pos>n) return;//没有意义了//选sum+=pos;vis[pos]=true;dfs(pos+1);sum-=pos;vis[pos]=false;dfs(pos+1);//不选
}   
int main() {cin>>n>>m;dfs(1);//dfs枚举位置
}

 以选几个作为决策

#include <iostream>
using namespace std;
bool vis[11];//标记数组
int n,m;
int sum;//统计已选数字的总和
void dfs(int pos){if(sum==m){for(int i=1;i<=n;++i)if(vis[i]) cout<<i<<" ";cout<<endl;return;}if(sum>m) return;//没有意义了for(int i=pos;i<=n;++i){sum+=i;vis[i]=true;dfs(i+1);vis[i]=false;sum-=i;}
}   
int main() {cin>>n>>m;dfs(1);//dfs枚举位置
}

十五、计算字符串的编辑距离(双数组dp问题)

计算字符串的编辑距离_牛客题霸_牛客网

#include <iostream>
#include <string>
using namespace std;
const int N=1010;
int dp[N][N];
string a,b;
int main() {//dp[i][j]表示以0-i的A串 变成0-j的B串所需要的最小操作次数cin>>a>>b;int m=a.size(),n=b.size();a=' '+a,b=' '+b;//为了同步下标dp[0][0]=0;//都是空串for(int i=1;i<=m;++i) dp[i][0]=i;for(int j=1;j<=n;++j) dp[0][j]=j;for(int i=1;i<=m;++i)for(int j=1;j<=n;++j)if(a[i]==b[j]) dp[i][j]=dp[i-1][j-1];else dp[i][j]=min(min(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1])+1;cout<<dp[m][n]<<endl;
}

十六、提取不重复的整数(模拟)

提取不重复的整数_牛客题霸_牛客网

#include <iostream>
using namespace std;
string s;
int main() {bool hash[10]={0};cin>>s;for(int i=s.size()-1;i>=0;--i){int x=s[i]-'0';if(!hash[x]){cout<<x;hash[x]=true;}}
}

十七、**【模板】哈夫曼编码

【模板】哈夫曼编码_牛客题霸_牛客网

#include <iostream>
#include <queue>
using namespace std;
typedef long long LL;
int n;
int main() {cin>>n;priority_queue<LL,vector<LL>,greater<LL>> heap;LL x;while(n--){cin>>x;heap.push(x);}LL ret=0;while(heap.size()>1){LL t1=heap.top();heap.pop();LL t2=heap.top();heap.pop();ret+=t1+t2;heap.push(t1+t2);}cout<<ret<<endl;
}

十八、**abb(多状态dp)

abb_牛客题霸_牛客网

#include <iostream>
using namespace std;
const int N=1e5+10;
typedef long long LL;
char s[N];
LL f[26],g[26];
//f[]表示以i位置为结尾时有多少个_x
//g[]表示以i位置为结尾时有多少个x
int n;
int main() {cin>>n>>s;LL ret=0;for(int i=0;i<n;++i){int x=s[i]-'a';ret+=f[x];f[x]+=i-g[x];g[x]+=1;}cout<<ret<<endl;
}


http://www.hkcw.cn/article/iSJHCwjXIF.shtml

相关文章

国密SSL证书和国产SSL证书有什么区别

国密SSL证书和国产SSL证书在定义、算法标准、安全性能、兼容性、应用场景及自主可控性等方面存在显著区别&#xff0c;具体分析如下&#xff1a; 定义与背景 国密SSL证书 采用中国自主研发的密码算法&#xff08;如SM2、SM3、SM4&#xff09;&#xff0c;符合国家密码管理局发…

OramaCore 是您 AI 项目、答案引擎、副驾驶和搜索所需的 AI 运行时。它包括一个成熟的全文搜索引擎、矢量数据库、LLM界面和更多实用程序

一、软件介绍 文末提供程序和源码下载 OramaCore 是您的项目、答案引擎、副驾驶和搜索所需的 AI 运行时。 它包括一个成熟的全文搜索引擎、矢量数据库、LLM具有行动计划和推理功能的接口、用于根据数据编写和运行您自己的自定义代理的 JavaScript 运行时&#xff0c;以及更多…

实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.14 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第5章析因设计引导5.7节思考题5.14 R语言解题。主要涉及方差分析&#xff0c;正态假设检验&#xff0c;残差分析&#xff0c;交互作用图。 dataframe<-data.frame( strengthc(9.60,9.…

Maven---配置本地仓库

目录 5. 5.1在Maven路径下新建文件夹用于本地仓库存储 5.2 复制本地仓库路径 5.3 找到配置文件路径&#xff0c;使用VSCode方式打开 5.4 新增一行代码 5.5 复制本地仓库路径&#xff0c;设置存储路径 5.1在Maven路径下新建文件夹用于本地仓库存储 5.2 复制本地仓库路径 5…

Docker环境构建:MySQL 双主四从集群

Java系列文章 文章目录 Java系列文章前言一、环境准备与Docker配置1.1 环境配置1.2 目录结构1.3 读写分离1.3.1 读写分离方案1.3.2 自定义Docker网络 二、双主四从节点配置2.1 创建MySQL_1节点2.1.1 Mysql_1容器2.1.2 Navicat创建连接2.1.3 创建配置账户 2.2 创建MySQL_2节点2.…

低频 500kHz vs 高频 1MHz,FP6291C与FP6291升压芯片应用在不同场景该怎么选择?

FP6291C 与 FP6291 均为电流模式升压型 DC-DC 转换器&#xff0c;内置功率 MOSFET 和内部补偿网络。这一特性极大简化了外部电路设计&#xff0c;不仅降低了 PCB 空间占用&#xff0c;还能有效控制成本。两者均支持软启动功能&#xff0c;可显著减少浪涌电流&#xff0c;提升系…

leetcode题解513:找树左下角的值(递归中的回溯处理)!

一、题目内容&#xff1a; 题目要求找到一个二叉树的最底层最左边节点的值。具体来说&#xff0c;我们需要从根节点开始遍历二叉 树&#xff0c;找到最深的那层中的最左边的节点&#xff0c;并返回该节点的值。因为要先找到最底层左侧的值&#xff0c;所以我们选择遍历顺序一定…

React项目在ios和安卓端要做一个渐变色背景,用css不支持,可使用react-native-linear-gradient

以上有个模块是灰色逐渐到白的背景色过渡 如果是css&#xff0c;以下代码就直接搞定 background: linear-gradient(180deg, #F6F6F6 0%, #FFF 100%);但是在RN中不支持这种写法&#xff0c;那应该写呢&#xff1f; 1.引入react-native-linear-gradient插件&#xff0c;我使用的是…

Nginx进阶篇(Nginx静态资源概述、Nginx静态资源配置指令、Nginx静态资源优化配置、Nginx静态资源压缩)

文章目录 1. Nginx静态资源概述2. Nginx静态资源配置指令2.1 listen指令2.2 server_name指令2.2.1 精确匹配2.2.2 补充知识&#xff1a;hosts文件2.2.3 通配符匹配2.2.4 正则表达式匹配2.2.5 匹配的执行顺序 2.3 location指令2.3.1 uri以指定模式开始&#xff08;/&#xff09;…

SAP 生产订单收货数量超额报错问题研究

工单收货接口报错有点奇怪&#xff0c;明明是生产订单收货&#xff0c;报错消息中却一直说采购订单收货。 其实之前有发现&#xff0c;只是知道原因&#xff08;收货数量超过工单总数量&#xff09;&#xff0c;没太关注描述问题&#xff0c;这次好好研究下。 首先检查消息号&…

【连接器专题】SD卡座规格书审查需要审哪些方面?

在审查SD卡座规格书时,我们需要考虑哪些方面? 首先在拿到一份SD卡座的详细规格书时,一般供应商给到的规格书中包括了一些基础信息、产品图纸信息、技术参数信息,同时有些供应商会给出产品可靠性测试报告。因此我们会从这几个要素去看规格书。 基础信息 基础信息一般会给变更…

sward V1.1.4版本发布,支持文档审批及文档导出

sward是一款国产开源企业级知识管理工具&#xff0c;包含知识库管理、文档管理、文档协作、文档分享等模块&#xff0c;支持普通文档、markdown等格式&#xff0c;产品简洁易用、开源免费。本周sward发布V1.1.4版本&#xff0c;增加了文档审批和文档导出为word的功能&#xff0…

谷云科技发布业内首份 Oracle OSB 迁移到 iPaaS 技术白皮书

随着企业数字化转型的加速推进&#xff0c;从传统企业服务总线ESB向现代化集成平台iPaaS迁移已成为行业发展的必然趋势。Oracle Service Bus&#xff08;OSB&#xff09;在ESB产品市场中长期以来一直占据着较高的市场份额。然而&#xff0c;许多用户由于担心技术迁移的复杂性和…

特伦斯 S75 电钢琴:重塑音乐感知,臻享艺术之境

在音乐文化蓬勃发展的当下&#xff0c;电钢琴已成为音乐爱好者探索旋律世界的热门之选。在这方充满无限可能的音乐领域&#xff0c;特伦斯 S75 电钢琴以其超凡的设计与卓越的性能&#xff0c;打破传统电钢琴的局限&#xff0c;为用户带来无与伦比的音乐体验&#xff0c;宛如一颗…

立控信息智能装备柜:科技赋能军队装备管理现代化

在军事装备管理领域&#xff0c;高效、安全、智能化的存储解决方案至关重要。传统的人工管理模式不仅效率低下&#xff0c;还容易因人为疏忽导致装备丢失或管理混乱。​LKONE智能装备柜凭借先进的物联网技术、生物识别安全系统和智能管理功能&#xff0c;为军队提供了一套高效、…

【freertos-kernel】queue(接收)

文章目录 xQueueReceivexQueueReceiveFromISRxQueuePeekxQueuePeekFromISR xQueueReceive 从队列中接收一个数据项。 和发送数据的过程有点类似&#xff0c;不逐行解释代码了。 vTaskPlaceOnEventList把当前任务放进队列的等待链表的同时也会把当前任务从就绪列表移除&#x…

Clish中xml文件配置的使用方法

1&#xff0c;引入 之前介绍了klish的源码如何安装和使用&#xff0c;本次介绍一下klish的xml配置文件是如何使用的&#xff0c;介绍其中的<COMMAND>/<PARAM>/<PTYPE>等基础配置&#xff0c;方便以后查看。 2&#xff0c;clish中xml文件的基本语法 1&#…

Compose仿微信底部导航栏NavigationBar :底部导航控制滑动并移动

文章目录 1、准备工作1.1 参考1.2 依赖添加&#xff1a;1.3 主要控件NavigationBarHorizontalPager、VerticalPager 2、功能描述&#xff1a;3、实现过程3.1 创建一个数据类3.2 创建一个list变量3.3 具体实现3.3.1 创建共享的Pager状态3.3.2 将页面索引与页面标题同步3.3.3 创建…

由反汇编代码确定结构体的完整声明

C程序中遇到下面的代码 typedef struct {int left;a_struct a[CNT];int right; } b_struct;void test( int i, b_struct *bp) {int nbp->leftbp->right;a_struct *ap&bp->a[i];ap->x[ap->idx]n; } 下面是test函数的反汇编代码 结合C程序中的代码与test函数…

生成式人工智能:重塑社会的双刃剑与人类文明的抉择

普罗米修斯之火与文明的抉择 当古希腊神话中的普罗米修斯盗取天火赠予人间时&#xff0c;人类文明开启了从蒙昧走向理性的征程。今天&#xff0c;生成式人工智能&#xff08;GenAI&#xff09;正以类似的方式重塑人类认知的边界——它既是照亮未来的火炬&#xff0c;也是可能灼…