2024牛客寒假算法基础集训营1
文章目录
- A DFS搜索
- M牛客老粉才知道的秘密
- G why外卖
- E 本题又主要考察了贪心
- B 关鸡
- C 按闹分配
今天的牛客,说是都是基础题,头昏昏的,感觉真不会写,只能赛后补题了
A DFS搜索
写的时候刚开始以为还是比较难的,和dfs有关,读完题目发现就是一个序列中含有dfs,而且字符串的长度小于等于五十,可以直接三层暴力搜索即可。
需要注意要考虑长度小于3的情况,刚开始没有考虑到,如果小于3,肯定是不符合的。
AC代码
#include <bits/stdc++.h>
using namespace std;
int main()
{int n;cin >> n;string s1 = "DFS";string s2 = "dfs";while (n--){bool flag1 = false;bool flag2 = false;int t;string s;cin >> t >> s;if (s.length() < 3){cout << "0"<< " "<< "0" << endl;continue;}for (int i = 0; i < s.length() - 2; i++){if (s[i] == 'D'){for (int j = i + 1; j < s.length() - 1; j++){if (s[j] == 'F'){for (int k = j + 1; k < s.length(); k++){if (s[k] == 'S'){// 满足条件的flag1 = true;}}}}}}for (int i = 0; i < s.length() - 2; i++){char c = s[i];if (s[i] == 'd'){for (int j = i + 1; j < s.length() - 1; j++){if (s[j] == 'f'){for (int k = j + 1; k < s.length(); k++){if (s[k] == 's'){// 满足条件的flag2 = true;}}}}}}if (flag1 == true){cout << "1"<< " ";}else{cout << "0"<< " ";}if (flag2 == true){cout << "1" << endl;}else{cout << "0" << endl;}}
}
M牛客老粉才知道的秘密

这道题目其实可以看做是数论和找规律的题目,属于div4了。
每次只能显示6道题目,刚开始去模拟了一遍,超时间复杂度了,需要的是O(1);
可以这样想着,如果为6的整数,那么最左侧一道的可能性,往后移动应该是n/6,并且向右和向左是相同的位置
如果不是6的整数呢?先移动n/6次,再+一次移动到了最右边。此时为n/6+1;
从最右边往左开始移动,可以发现,最左边的位置和向右移动只可能在1的时候会有重复,其他是不可能重复的,因为刚才发生移位了。
所以数量为n/6-1 。综上就是n/6*2;
AC代码
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int t=scanner.nextInt();while (t-->0){int sum=0;int n=scanner.nextInt();int k=n%6;if (k!=0){//简单的逻辑思维题目int m=n/6;sum+=m+m;}else{sum+=n/6;}System.out.println(sum);}}
}
G why外卖
这也是一道模拟题目,感觉是基本的高中数学题目,要想明白他们之间的关系,我感觉就可以了
可以使用优惠卷,但是购买物品的价格必须大于所用的优惠卷,我刚开始在想如果花费价格小于优惠卷如何解决?
其实这个问题是可以不同解决的。
sum是可以减去的钱,sum+m可以你可以购买最大商品的价值,如果sum+m大于了当前的优惠卷,就可以ans就等于n+sum;
但是如果现在是100 80 只有10块钱,那么不符合要求,为什么sum还要加上八十呢?
这个80现在其实只是加在了sum里面,并没有加到ans里面。因为数组是升序的,也就是后面如果大于了,说明前面一定也是大于的。就可以加进来。
package 牛客寒假训练营.第一场.G;import java.util.Arrays;
import java.util.Scanner;class Money implements Comparable<Money> {long a;
long b;public Money(long a, long b) {this.a = a;this.b = b;
}@Override
public int compareTo(Money other) {return Long.compare(this.a, other.a);
}
}public class Main {
public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int t = scanner.nextInt();while (t-- > 0) {solve(scanner);}
}static void solve(Scanner scanner) {int n = scanner.nextInt();long m = scanner.nextLong();Money[] c = new Money[100005];long ans = m;long sum = 0;for (int i = 1; i <= n; i++) {long a = scanner.nextLong();long b = scanner.nextLong();c[i] = new Money(a, b);}Arrays.sort(c, 1, n + 1); //排序,出来的按照优惠的价格进行排序for (int i = 1; i <= n; i++) {sum += c[i].b;//优惠的价格if (sum + m >= c[i].a) {ans = m + sum;}}System.out.println(ans);
}
}
E 本题又主要考察了贪心
不能被题目的名称所迷惑,说是贪心考点,其实并不是贪心。
这道题在考场如何去做呢?先看数据范围。
每次比赛都有三种对应的可能,m<=10,说明最多有十场比赛,也就是3的10次方,这个时间复杂度是可以接收的,可以想到用dfs去解决。
#include <bits/stdc++.h>
using namespace std;
int n, m;
int x[101], y[101];
int ans, a[101];// u是对应的场数 当u>m表示比赛已经结束的时候
void dfs(int u)
{if (u > m){int rank = 1;for (int i = 2; i <= n; i++){if (a[1] < a[i])rank++;}ans = min(ans, rank);return;}a[x[u]] += 3;dfs(u + 1);a[x[u]] -= 3;a[y[u]] += 3;dfs(u + 1);a[y[u]] -= 3;a[x[u]]++;a[y[u]]++;dfs(u + 1);a[x[u]]--;a[y[u]]--;
}
int main()
{int t;cin >> t;while (t--){cin >> n >> m;ans = n;for (int i = 1; i <= n; i++){cin >> a[i];}for (int i = 1; i <= m; i++){cin >> x[i] >> y[i];}dfs(1);cout << ans << endl;}
}
其实就是可以看作为一个三叉树来看,每一次都是有A赢或者B赢或者AB平局,走遍每一个路径,需要找到最好的排名。时间复杂度 o(n*3^m);
用a数组来存左边操作的玩家,用b数组来存储右边操作的玩家。
dfs结束的条件,就是u>m表示游戏轮数结束了
B 关鸡
如何将这个鸡关在里面呢?
想要这个鸡不跑出去有两个情况,第一个是需要四个点,各方在两边即可。第二个是三个火点直接将g包围即可。
所以刚开始让ans1=4,ans2=3 看两个哪个小,ans2需要全部包围只能由一种情况,就是刚开始是包围的。并且如果n==0,一定是最小需要三个,直接包围起来。
#include <bits/stdc++.h>
#define int long long
#define pii pair<double,double>
using namespace std;
const int N=2e5+5;
int t,n,m,k;
int x,y,a[N],b[N];
signed main() {cin>>t; // 输入测试用例数量while(t--) {cin>>n; // 输入点的数量if(n==0) { // 如果点的数量为0cout<<3<<endl; // 输出3continue;}map<int,int> ma1,ma2; // 定义两个map,用于统计x=1和x=2的y的出现次数int ans1=4,ans2=3; // 初始化两个答案,分别对应x=1和x=2的情况bool ll=0,rr=0; // 判断左右区间是否有点for(int i=0;i<n;i++) {cin>>x>>y; // 输入x和yif(x==1&&y==1) ans2--; // 如果x=1,y=1,ans2减1if(x==1&&y==-1) ans2--; // 如果x=1,y=-1,ans2减1if(x==2&&y==0) ans2--; // 如果x=2,y=0,ans2减1if(y<=0) ll=1; // 如果y<=0,左区间有点if(y>=0) rr=1; // 如果y>=0,右区间有点if(x==1) {ma1[y]++; // 统计x=1的y出现的次数}if(x==2) {ma2[y]++; // 统计x=2的y出现的次数}}if(ll) ans1--; // 如果左区间有点,ans1减1 左边有端点if(rr) ans1--; // 如果右区间有点,ans1减1 右边有端点bool l=0,r=0; // 判断左右区间是否有点for(auto it:ma1) {int p=it.first; // 获取y的值if(p<0) {//存在一个点周围有其他点,那边这里肯定是出不去的 下面ans还需要--;if(ma2[p-1]||ma2[p]||ma2[p+1]) l=1; // 如果左区间存在点,l置为1}if(p>0) {if(ma2[p-1]||ma2[p]||ma2[p+1]) r=1; // 如果右区间存在点,r置为1}}if(l) ans1--; // 如果左区间有点,ans1减1if(r) ans1--; // 如果右区间有点,ans1减1cout<<min(ans1,ans2)<<endl; // 输出两个答案中的较小值}return 0;
}
//3 2 1 5 4
//3 4 5 1 2
/*abcabcabc*/
这里用到了map来存储对应的地图值,暴力遍历的。
C 按闹分配
##


增加的不满意度就是 tc*排在鸡后面的人数,给定了最大不满意度,所以可以算出来最多人数为m/tc。向下进行取整
此时再将排在鸡前面的时间加起来再加上鸡需要的时间,就是最早的时间了。
AC代码
#include<bits/stdc++.h>#define int long long
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)using namespace std;const int N = 1e5+10;int t[N],s[N];
int tt[N],ss[N];signed main(){IOS;int n,q,tc;cin >> n >> q >> tc;for(int i=1;i<=n;i++){cin >> t[i];}sort(t+1,t+1+n);for(int i=1;i<=q;i++){int m;cin >> m;int ans=0;int w=m/tc;for(int i=1;i<=n-w;i++) ans+=t[i];cout << ans+tc << '\n';}return 0;
}
相关文章:
2024牛客寒假算法基础集训营1
文章目录 A DFS搜索M牛客老粉才知道的秘密G why外卖E 本题又主要考察了贪心B 关鸡C 按闹分配 今天的牛客,说是都是基础题,头昏昏的,感觉真不会写,只能赛后补题了 A DFS搜索 写的时候刚开始以为还是比较难的,和dfs有关…...
元素的显示与隐藏,精灵图,字体图标,CSSC三角
元素的显示与隐藏 类似网站广告,当我们点击关闭就不见了,但是我们重新刷新页面,会重新出现 本质:让元素在页面中隐藏或者显示出来。 1.display显示隐藏 2.visibility显示隐藏 3.overflow溢出显示隐藏 1.display属性(…...
最新!2024顶级SCI优化!TTAO-CNN-BiGRU-MSA三角拓扑聚合优化、双向GRU融合注意力的多变量回归预测程序!
适用平台:Matlab 2023版及以上 TTOA三角聚合优化算法,将在2024年3月正式发表在中科院1区顶级SCI期刊《Expert Systems with Applications》上。 该算法提出时间极短,目前以及近期内不会有套用这个算法的文献。新年伊始,尽快拿下…...
Flink SQL Client 安装各类 Connector、组件的方法汇总(持续更新中....)
一般来说,在 Flink SQL Client 中使用各种 Connector 只需要该 Connector 及其依赖 Jar 包部署到 ${FLINK_HOME}/lib 下即可。但是对于某些特定的平台,如果 AWS EMR、Cloudera CDP 等产品会有所不同,主要是它们中的某些 Jar 包可能被改写过&a…...
React18-模拟列表数据实现基础表格功能
文章目录 分页功能分页组件有两种接口参数分页类型用户列表参数类型 模拟列表数据分页触发方式实现目录 分页功能 分页组件有两种 table组件自带分页 <TableborderedrowKey"userId"rowSelection{{ type: checkbox }}pagination{{position: [bottomRight],pageSi…...
MySQL查询数据(十)
MySQL查询数据(十) 一、SELECT基本查询 1.1 SELECT语句的功能 SELECT 语句从数据库中返回信息。使用一个 SELECT 语句,可以做下面的事: **列选择:**能够使用 SELECT 语句的列选择功能选择表中的列,这些…...
AJAX-常用请求方法和数据提交
常用请求方法 请求方法:对服务器资源,要执行的操作 axios请求配置 url:请求的URL网址 method:请求的方法,如果是GET可以省略;不用区分大小写 data:提交数据 axios({url:目标资源地址,method…...
2024美国大学生数学建模竞赛美赛B题matlab代码解析
2024美赛B题Searching for Submersibles搜索潜水器 因为一些不可抗力,下面仅展示部分代码(很少部分部分)和部分分析过程,其余代码看文末 Dthxlsread(C:\Users\Lenovo\Desktop\Ionian.xlsx); DpDth(:,3:5); dy0.0042; dx0.0042; …...
【DouYing Desktop】
I) JD 全日制大专及以上学历; 2. 3年以上的IT服务支持相关工作经验 3. 有较强的桌面相关trouble shooting与故障解决能力,能够独立应对各类型桌面问题; 4. 具备基础的网络、系统知识,能够独立解决常见的网络、系统等问题…...
正则表达式与文本处理工具
目录 引言 一、正则表达式基础 (一)字符匹配 1.基本字符 2.特殊字符 3.量词 4.边界匹配 (二)进阶用法 1.组与引用 2.选择 二、命令之-----grep (一)基础用法 (二)高级用…...
IDEA中的Run Dashboard
Run Dashboard是IntelliJ IDEA中的工具【也就是View中的Services】,提供一个可视化界面,用于管理控制应用程序的运行和调试过程。 在Run DashBoard中,可以看到所有的运行配置,以及每个配置的运行状态(正在运行…...
【力扣白嫖日记】SQL
前言 练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。 今日题目: 1407.排名靠前的旅行者 表:Users 列名类型idintnamevarchar id 是该表中具有唯一值的列。name …...
自动化报告pptx-python|高效通过PPT模版制造报告(三)
这是自动化报告学习的第三篇了,前面两篇分别是: 自动化报告的前奏|使用python-pptx操作PPT(一)自动化报告pptx-python|如何将pandas的表格写入PPTX(二)本篇是逼着笔者看到JoStudio 大佬自己写的一个jojo-office 库,基于pptx-python开发成一套试用office软件的依赖,非…...
Linux升级openssh的解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...
YOLOv5白皮书-第Y3周:yolov5s.yaml文件解读
YOLOv5白皮书-第Y3周:yolov5s.yaml文件解读 YOLOv5白皮书-第Y3周:yolov5s.yaml文件解读一、前言二、我的环境三、yolov5s.yaml源文件内容四、Parameters五、anchors配置六、backbone七、head八、总结 OLOv5-第Y2周:训练自己的数据集) YOLOv5白皮书-第Y3周:yolov5s.…...
C++ pair+map+set+multimap+multiset+AVL树+红黑树(深度剖析)
文章目录 1. 前言2. 关联式容器3. pair——键值对4. 树形结构的关联式容器4.1 set4.1.1 set 的介绍4.1.2 set 的使用 4.2 map4.2.1 map 的介绍4.2.2 map 的使用 4.3 multiset4.3.1 multiset 的介绍4.3.2 multiset 的使用 4.4 multimap4.4.1 multimap 的介绍4.4.2 multimap 的使…...
指针的学习1
目录 什么是指针? 野指针 造成野指针的原因: 如何避免野指针? 内存和指针 如何理解编址? 指针变量和地址 取地址操作符& 指针变量和解引用操作符 指针变量 如何拆解指针类型? 指针变量的大小 指针变量…...
c++:敲桌子
先输出1-100数字,从100个数字中找到这些特殊数字改为敲桌子。 特殊数字:1.7的倍数 2.十位数上有7 3.个位数上有7 #include<iostream> using namespace std; int main() {for (int i 1; i < 100; i) {if (i / 10 7 || i % 10 7|| i % 7 0)…...
Linux中判断文件系统的方法
文章目录 Linux中判断文件系统的方法1.使用mount命令2.使用blkid命令3.使用file命令4.使用fstab文件5.使用df命令(这个用的比较多)6.使用fsck命令7.使用lsblk命令(推荐-简单好用) Linux中判断文件系统的方法 1.使用mount命令 # 这样查看的只有已经挂载…...
聊聊ClickHouse MergeTree引擎的固定/自适应索引粒度
前言 我们在刚开始学习ClickHouse的MergeTree引擎时,就会发现建表语句的末尾总会有SETTINGS index_granularity 8192这句话(其实不写也可以),表示索引粒度为8192。在每个data part中,索引粒度参数的含义有二…...
数据、信息、知识:三者有什么区别
在人工智能、知识表示和知识图谱的学习中,“数据”“信息”“知识”是三个最基础的概念。它们彼此相关,但并不相同。只有区分这三者,才能进一步理解:为什么计算机不能只存储数据,还需要组织信息、表达知识,…...
忍者像素绘卷效果展示:飞雷神之术瞬移轨迹×金色像素残影动态图
忍者像素绘卷效果展示:飞雷神之术瞬移轨迹金色像素残影动态图 1. 作品概览 忍者像素绘卷是基于Z-Image-Turbo深度优化的图像生成工作站,它将传统忍者文化与16-Bit复古游戏美学完美融合。这款工具特别擅长生成具有强烈动态感的忍者动作场景,…...
SAP MM模块预留功能实战:从创建到发料的完整流程解析
SAP MM模块预留功能实战:从创建到发料的完整流程解析 在制造业和供应链管理领域,物料预留是确保生产计划顺利执行的关键环节。SAP MM模块中的预留功能,就像一位经验丰富的仓库管理员,能够提前为未来需求锁定必要的物料资源。想象一…...
旋转编码器底层驱动库:轻量级正交解码与抗抖动设计
1. 旋转编码器底层驱动库技术解析与工程实践旋转编码器(Rotary Encoder)是嵌入式系统中最为基础且高频使用的机电输入设备之一,广泛应用于工业HMI、电机调速面板、音频设备音量调节、医疗设备参数设定等场景。其核心价值在于提供无触点、高寿…...
Cursor 3 来袭:编程已不是敲键盘,而是指挥智能体!
2026 年 4 月,AI 编程工具巨头 Cursor 正式发布新一代产品 Cursor 3。与传统的代码编辑器不同,Cursor 3 将开发者的交互界面从“键盘敲击”转向了“智能体指挥”。它不再把 VS Code 视为核心工作台,而是将其降级为一种“备选方案”。该工具的…...
基于STM32的智能录音机设计与实现
1. 项目概述这个基于STM32的录音机项目是我最近完成的一个嵌入式系统设计实践。作为一个经常需要记录会议和灵感的人,我一直对市面上的录音设备不太满意——要么功能单一,要么价格昂贵。于是决定自己动手,用STM32F103C8T6作为主控,…...
从理论到实践:信道利用率在停止-等待与回退N帧协议中的量化分析与优化
1. 信道利用率的核心概念与实战意义 第一次接触信道利用率这个概念时,我也被各种公式绕得头晕。直到在卫星通信项目中踩过几次坑才真正明白:信道利用率就是衡量你把通信线路"压榨"到什么程度的标尺。想象你租了条高速公路送货,总不…...
企业官网源码_公司网站模板_自适应手机端
一、源码下载平台:企业建站的“数字工具箱” 1. 开源生态驱动创新 GitHub、Gitee等全球开源代码托管平台,汇聚了数百万企业级项目。以GitHub为例,其企业官网源码库涵盖电商、教育、金融等20余个行业,包含完整的前端框架…...
2026届必备的十大AI科研网站解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 伴随人工智能技术的迅猛发展,AI论文工具已然成为学术写作范畴的关键辅助方式&…...
即插即用模块-Attention篇:SCA简化通道注意力如何重塑轻量级视觉模型
1. 为什么需要简化通道注意力? 在移动端和边缘计算设备上跑视觉模型,就像让一辆小排量汽车拉重货——既要省油又要动力足。传统通道注意力模块(Channel Attention)虽然能提升模型性能,但它的计算开销就像给车子装了个大…...
