当前位置: 首页 > news >正文

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牛客老粉才知道的秘密

image.png
这道题目其实可以看做是数论和找规律的题目,属于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外卖

这也是一道模拟题目,感觉是基本的高中数学题目,要想明白他们之间的关系,我感觉就可以了
image.png
可以使用优惠卷,但是购买物品的价格必须大于所用的优惠卷,我刚开始在想如果花费价格小于优惠卷如何解决?
其实这个问题是可以不同解决的。
image.png
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 本题又主要考察了贪心

不能被题目的名称所迷惑,说是贪心考点,其实并不是贪心。

这道题在考场如何去做呢?先看数据范围。
image.png
每次比赛都有三种对应的可能,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 关鸡

如何将这个鸡关在里面呢?
image.png
想要这个鸡不跑出去有两个情况,第一个是需要四个点,各方在两边即可。第二个是三个火点直接将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 按闹分配


##image.png
image.png
image.png
增加的不满意度就是 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 按闹分配 今天的牛客&#xff0c;说是都是基础题&#xff0c;头昏昏的&#xff0c;感觉真不会写&#xff0c;只能赛后补题了 A DFS搜索 写的时候刚开始以为还是比较难的&#xff0c;和dfs有关…...

元素的显示与隐藏,精灵图,字体图标,CSSC三角

元素的显示与隐藏 类似网站广告&#xff0c;当我们点击关闭就不见了&#xff0c;但是我们重新刷新页面&#xff0c;会重新出现 本质&#xff1a;让元素在页面中隐藏或者显示出来。 1.display显示隐藏 2.visibility显示隐藏 3.overflow溢出显示隐藏 1.display属性&#xff08;…...

最新!2024顶级SCI优化!TTAO-CNN-BiGRU-MSA三角拓扑聚合优化、双向GRU融合注意力的多变量回归预测程序!

适用平台&#xff1a;Matlab 2023版及以上 TTOA三角聚合优化算法&#xff0c;将在2024年3月正式发表在中科院1区顶级SCI期刊《Expert Systems with Applications》上。 该算法提出时间极短&#xff0c;目前以及近期内不会有套用这个算法的文献。新年伊始&#xff0c;尽快拿下…...

Flink SQL Client 安装各类 Connector、组件的方法汇总(持续更新中....)

一般来说&#xff0c;在 Flink SQL Client 中使用各种 Connector 只需要该 Connector 及其依赖 Jar 包部署到 ${FLINK_HOME}/lib 下即可。但是对于某些特定的平台&#xff0c;如果 AWS EMR、Cloudera CDP 等产品会有所不同&#xff0c;主要是它们中的某些 Jar 包可能被改写过&a…...

React18-模拟列表数据实现基础表格功能

文章目录 分页功能分页组件有两种接口参数分页类型用户列表参数类型 模拟列表数据分页触发方式实现目录 分页功能 分页组件有两种 table组件自带分页 <TableborderedrowKey"userId"rowSelection{{ type: checkbox }}pagination{{position: [bottomRight],pageSi…...

MySQL查询数据(十)

MySQL查询数据&#xff08;十&#xff09; 一、SELECT基本查询 1.1 SELECT语句的功能 SELECT 语句从数据库中返回信息。使用一个 SELECT 语句&#xff0c;可以做下面的事&#xff1a; **列选择&#xff1a;**能够使用 SELECT 语句的列选择功能选择表中的列&#xff0c;这些…...

AJAX-常用请求方法和数据提交

常用请求方法 请求方法&#xff1a;对服务器资源&#xff0c;要执行的操作 axios请求配置 url&#xff1a;请求的URL网址 method&#xff1a;请求的方法&#xff0c;如果是GET可以省略&#xff1b;不用区分大小写 data&#xff1a;提交数据 axios({url:目标资源地址,method…...

2024美国大学生数学建模竞赛美赛B题matlab代码解析

2024美赛B题Searching for Submersibles搜索潜水器 因为一些不可抗力&#xff0c;下面仅展示部分代码&#xff08;很少部分部分&#xff09;和部分分析过程&#xff0c;其余代码看文末 Dthxlsread(C:\Users\Lenovo\Desktop\Ionian.xlsx); DpDth(:,3:5); dy0.0042; dx0.0042; …...

【DouYing Desktop】

I) JD 全日制大专及以上学历&#xff1b; 2. 3年以上的IT服务支持相关工作经验 3. 有较强的桌面相关trouble shooting与故障解决能力&#xff0c;能够独立应对各类型桌面问题&#xff1b; 4. 具备基础的网络、系统知识&#xff0c;能够独立解决常见的网络、系统等问题&#xf…...

正则表达式与文本处理工具

目录 引言 一、正则表达式基础 &#xff08;一&#xff09;字符匹配 1.基本字符 2.特殊字符 3.量词 4.边界匹配 &#xff08;二&#xff09;进阶用法 1.组与引用 2.选择 二、命令之-----grep &#xff08;一&#xff09;基础用法 &#xff08;二&#xff09;高级用…...

IDEA中的Run Dashboard

Run Dashboard是IntelliJ IDEA中的工具【也就是View中的Services】&#xff0c;提供一个可视化界面&#xff0c;用于管理控制应用程序的运行和调试过程。 在Run DashBoard中&#xff0c;可以看到所有的运行配置&#xff0c;以及每个配置的运行状态&#xff08;正在运行&#xf…...

【力扣白嫖日记】SQL

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 1407.排名靠前的旅行者 表&#xff1a;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周&#xff1a;训练自己的数据集) 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

目录 什么是指针&#xff1f; 野指针 造成野指针的原因&#xff1a; 如何避免野指针&#xff1f; 内存和指针 如何理解编址&#xff1f; 指针变量和地址 取地址操作符& 指针变量和解引用操作符 指针变量 如何拆解指针类型&#xff1f; 指针变量的大小 指针变量…...

c++:敲桌子

先输出1-100数字&#xff0c;从100个数字中找到这些特殊数字改为敲桌子。 特殊数字&#xff1a;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命令&#xff08;这个用的比较多&#xff09;6.使用fsck命令7.使用lsblk命令(推荐-简单好用) Linux中判断文件系统的方法 1.使用mount命令 # 这样查看的只有已经挂载…...

聊聊ClickHouse MergeTree引擎的固定/自适应索引粒度

前言 我们在刚开始学习ClickHouse的MergeTree引擎时&#xff0c;就会发现建表语句的末尾总会有SETTINGS index_granularity 8192这句话&#xff08;其实不写也可以&#xff09;&#xff0c;表示索引粒度为8192。在每个data part中&#xff0c;索引粒度参数的含义有二&#xf…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...