腾讯校园招聘技术类编程题汇总

 题解:并查集(模板)

#include <iostream>
#include<map>
using namespace std;
int father[2000006];
int rank1[1000005];
void init(int n){for(int i=1;i<=1e5;i++){father[i]=i;rank1[i]=1;}
}
int find(int x){if(father[x]==x){return x;}while(x!=father[x]){x=father[x];}return x;
}
void merge(int x,int y){int x1=find(x);int y1=find(y);if (x1 != y1)                           //如果不是同一个集合{if (rank1[x1] < rank1[y1])     //rank大的集合合并rank小的集合{father[x1]=y1;rank1[y1]++;        }else if(rank1[x1] >= rank1[y1]){father[y1]=x1;rank1[x1]++;}}}
map<int,int>mp;
int main() {int T;scanf("%d",&T);while(T--){int n;scanf("%d",&n);init(n);for(int i=0;i<n;i++){int x,y;scanf("%d%d",&x,&y);merge(x,y);}int res=1;for(int i=1;i<=1e5;i++){int k=find(i);mp[k]++;int w=mp[k];   res=max(res,w);}printf("%d\n",res);mp.clear();}return 0;}

 题解:首先对于字符串大小的比较需要重写,然后利用优先队列维护前K个字符在队列中,最终取出队首元素即可

#include <iostream>
#include<stdio.h>
#include<queue>
#include<map>
#include<vector>
#include<string>
using namespace std;bool cmp1(string& a, string& b){if(a.size()==b.size())
{if(a<b){return false;}else {return true;}
}else if(a.size()>b.size()){string c=a.substr(0,b.size());if(c==b){return false;}else if(c>b){return true;}else{return false;}}else {string c=b.substr(0,a.size());if(c==a) return true;else if(c>a){return false;}else{return true;}}
}struct cmp {bool operator() (const string& a, const string& b) const {if(a.size()==b.size()){if(a<b){return false;}else {return true;}}else if(a.size()>b.size()){string c=a.substr(0,b.size());if(c==b){return false;}else if(c>b){return true;}else{return false;}}else {string c=b.substr(0,a.size());if(c==a) return true;else if(c>a){return false;}else {return true;}}}
};
// priority_queue<string, greater<string>, cmp> que;
priority_queue<string, vector<string>,cmp> que;
map<string,int>mp;
int main() {string s;cin>>s;int k;scanf("%d",&k);// vector<string>ve(k,"");for(int i=0;i<s.size();i++){char c=s[i]-'a';s[i]=100-c;}int num=0;for(int i=0;i<s.size();i++){for(int j=i;j<s.size();j++){string s1=s.substr(i,j-i+1);//    cout<<s1<<endl;if(num<k){if(mp[s1]){continue;}else{mp[s1]++;}que.push(s1);num++;}else{string s2=que.top();if(cmp1(s1,s2)){if(mp[s1]){continue;}else{mp[s1]++;}// cout<<(s1>s2)<<endl;// cout<<s1<<endl;// cout<<s2<<endl;que.pop();que.push(s1);}}}}// while(!que.empty()){//     cout<<que.top()<<endl;//     que.pop();// }// bool se="ddcc"<"ddc";// cout<<se;string res=que.top();for(int i=0;i<res.size();i++){res[i]=100+'a'-res[i];}cout<<res<<endl;// printf("%s\n",res);return 0;
}
// 64 位输出请用 printf("%lld")

 题解:暴力求解

#include <iostream>
#include<queue>
using namespace std;
queue<int>que;
int main() {int T;scanf("%d",&T);while(T--){while(!que.empty()){que.pop();}int n;scanf("%d",&n);for(int i=0;i<n;i++){string s;cin>>s;getchar();if(s=="PUSH"){int x;scanf("%d",&x);que.push(x);}else if(s=="TOP"){if(que.empty()){printf("%d\n",-1);}else{printf("%d\n",que.front());}}else if(s=="POP"){if(que.empty()){printf("%d\n",-1);}else{que.pop();}}else if(s=="SIZE"){if(que.empty()){printf("%d\n",0);}else{printf("%d\n",que.size());}}else if(s=="CLEAR"){if(!que.empty()){while(!que.empty()){que.pop();}}}}}return 0;
}
// 64 位输出请用 printf("%lld")

 题解:先判断是否有交点,如果有,分段使用积分

#include <iostream>
#include<stdio.h>
#include<math.h>
using namespace std;int main() {int T;scanf("%d",&T);while(T--){int A,B,C;scanf("%d%d%d",&A,&B,&C);int a=B*B;int b=2*B*C-2*A;int c=C*C;int t=b*b-4*a*c;if(t<0){double res=0;printf("%.10f\n",res);// printf("%.10f\n",0);出现了错误,由于printf存在缓冲区,会去取索引位0指针的值导致出错}else if(t==0){double x=-1.0*b/(2*a*1.0);double s=sqrt(2*A*1.0)*x*sqrt(x*1.0)*4/3.0;printf("%.10f\n",s);}else if(t>0){double x1=(-1*b-sqrt(t*1.0))/(2*a*1.0);double x2=(-1*b+sqrt(t*1.0))/(2*a*1.0);double s1=sqrt(2*A*1.0)*x1*sqrt(x1*1.0)*4/3.0;double s2=(sqrt(2*A*1.0)*x2*sqrt(x2*1.0)*2/3.0-B*x2*x2/2.0-C*x2)-(sqrt(2*A*1.0)*x1*sqrt(x1*1.0)*2/3.0-B*x1*x1/2.0-C*x1);if(C<=0){printf("%.10f\n",s1+s2);}else{printf("%.10f\n",s2);}}}return 0;
}

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

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

相关文章

Spring Boot中使用GraphQL

1. 简介 GraphQL是Facebook的一个相对较新的概念&#xff0c;被称为Web API的REST的替代品。 在本文中&#xff0c;我们将学习如何使用 Spring Boot 设置 GraphQL 服务器&#xff0c;以便我们可以将其添加到现有应用程序中或在新应用程序中使用它。 2. 什么是GraphQL&#x…

Centos7 扩容(LVM 和非 LVM)

一、磁盘扩容方式 CentOS 系统的磁盘扩容可以分为两种方式&#xff1a;LVM 管理和非 LVM 管理。 LVM 管理的分区和传统分区方式是可以共存的。在同一个系统中&#xff0c;你可以同时使用 LVM 管理的分区和传统分区。 例如&#xff0c;在 CentOS 系统中&#xff0c;你可以选择将…

while循环

while循环是一种常见的循环结构&#xff0c;它会重复执行一段代码&#xff0c;直到指定的条件不再满足。 基本语法如下&#xff1a; while 条件: # 循环体代码 其中&#xff0c;条件是一个布尔表达式&#xff0c;如果为True&#xff0c;则执行循环体中的代码&#xff1b;如果…

剑指offer51.数组中的逆序对

用类似于归并排序的方法解决这道题&#xff0c;把数组分成左右两个数组&#xff0c;然后归并排序&#xff0c;在排序的过程中统计逆序对的个数 class Solution {int[] nums, tmp;public int reversePairs(int[] nums) {this.nums nums;tmp new int[nums.length];return merge…

LX04 小米触屏音箱刷机教程

说明 这里的电脑是 win11 系统&#xff0c;win10 有差别但是不影响&#xff0c;自己解决,但不要使用精简版,尽量避免使用 win7 请看完此教程再问其他问题 此教程仅供学习使用&#xff0c;安装第三方软件出现的任何问题&#xff0c;小米都不会给予售后赔偿处理&#xff01;…

Web3将自己写在合约中的代币添加到MetaMask中管理

上文 Web3带着大家根据ERC-20文档编写自己的第一个代币solidity智能合约 带着大家在智能合约中创建了一个自己的代币系统 我们可以在MetaMask中去导入 ganache环境下模拟出来的第一和第二个账号 我们这里 可以看到他们的 ETH 但看不到自己的代币符号 没关系 我们点击这下面的…

MySQL必知必会 第27章 全球化和本地化

本章介绍MySQL处理不同字符集和语言的基础知识。 27.1 字符集和校对顺序 字符集&#xff1a;字母和符号的集合编码&#xff1a;某个字符集成员的内部标识校对&#xff1a;规定字符如何比较的指令 校对很重要 使用何种字符集和校对的决定在服务器、数据库和表级进行。 27.2 …

剑指 Offer. 翻转单词顺序

输入一个英文句子&#xff0c;翻转句子中单词的顺序&#xff0c;但单词内字符的顺序不变。为简单起见&#xff0c;标点符号和普通字母一样处理。例如输入字符串"I am a student. "&#xff0c;则输出"student. a am I"。 示例 1&#xff1a; 输入: "…

[howto] 使用git时,如何忽略本地文件

背景 有一些项目&#xff0c;需要在配置中填写自己的key&#xff0c;但是那个文件还在git的版本管理中&#xff0c;如果自己填了key&#xff0c;很容易把自己的key给commit上去了。所以要么每次提交之前检查一下&#xff0c;不提交这个文件&#xff0c;要么干脆忽略&#xff0…

Python学习笔记-Django框架基础,APP,数据模型,后台管理,路由

一、Django框架简介 Django框架是Python的常用web框架&#xff0c;遵循 MVC 设计模式的框架&#xff0c;采用了MTV的框架模式&#xff0c;即模型M&#xff0c;视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的&#xff0c;即是CMS&…

新能源汽车的发展

目录 1.什么是新能源 2.什么是新能源汽车 3.新能源汽车的优点 4.新能源汽车的危害 5.新能源汽车未来的发展 1.什么是新能源 新能源是指与传统能源&#xff08;如化石燃料&#xff09;相比&#xff0c;更具可再生性、清洁性和低碳排放的能源形式。它主要通过利用自然资源和可…

rust学习-面向对象

面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09; 封装细节 main.rs use rust_demo::AveragedCollection;fn main() {let mut ac AveragedCollection::new();println!("ac{:?}", ac);ac.add(3);ac.add(5);ac.add(7);println!(&…

Vue如何配置eslint

eslint官网: eslint.bootcss.com eslicate如何配置 1、选择新的配置&#xff1a; 2、选择三个必选项 3、再选择Css预处理器 4、之后选择处理器 5、选择是提交的时候就进行保存模式 6、放到独立的配置文件上去 7、最后一句是将自己的数据存为预设 8、配合console不要出现的规则…

【Java中的Thread线程的简单方法介绍和使用详细分析】

文章目录 前言一、run() 和 start() 方法二、sleep() 方法三、join() 方法总结 前言 提示&#xff1a;若对Thread没有基本的了解&#xff0c;可以先阅读以下文章&#xff0c;同时部分的方法已经在如下两篇文章中介绍过了&#xff0c;本文不再重复介绍&#xff01;&#xff01;…

Java: Commons-io

Commons-io是apache开源基金组织提供的一组有关IO操作的开源工具包。 1.作用 提高IO流的开发效率。 2.FileUtils类&#xff08;文件夹/文件&#xff09; 1.常见方法 static void copyFile(File srcFile&#xff0c;File destFile): 复制文件static void copyDirectory(Fil…

【Luogu】 P3665 [USACO17OPEN] Switch Grass P

题目链接 点击打开链接 题目解法 首先给出 2 个结论&#xff1a; 最接近的不同颜色的点一定是相邻的点 证明&#xff1a;假设最接近的不同颜色的点 ( u , v ) (u,v) (u,v) 不相邻&#xff0c;那么 u , v u,v u,v 之间的路径中必有相邻的不同颜色点 ( u ′ , v ′ ) (u,v…

在nginx上部署nuxt项目

先安装Node.js 我安的18.17.0。 安装完成后&#xff0c;可以使用cmd&#xff0c;winr然cmd进入&#xff0c;测试是否安装成功。安装在哪个盘都可以测试。 测试 输入node -v 和 npm -v&#xff0c;&#xff08;中间有空格&#xff09;出现下图版本提示就是完成了NodeJS的安装…

【js Call、apply与bind 区别】

JavaScript 中的 Call、apply 和 bind 都是用来改变函数的执行上下文&#xff08;即 this 指向&#xff09;的方法&#xff0c;但它们之间有些区别&#xff1a; Call 和 apply Call 和 apply 都是 Function.prototype 的方法。它们的作用是改变函数的 this 指向&#xff0c;并…

electron 生成 arm64 的包

vue electron&#xff1a;https://blog.csdn.net/qq1195566313/article/details/131713875 打包配置修改如下 electronBuilder.build({config: {appId: com.example.app,productName: vite-electron,directories: {output: path.join(process.cwd(), "release"), …

Windows OS CMD 常用工具 の 命令合集

# First Of All 每次想要修改环境变量都要按部就班点开系统属性、高级系统设置、环境变量。这种操作实在是太繁琐了&#xff0c;对于我一个懒人来讲实在是 忍无可忍 。如果可以使用 WINR 或 CMD 直接打开系统内的一些工具&#xff0c;是不是就可以节省很多时间&#xff1b;是不…