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中,索引粒度参数的含义有二…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...

sshd代码修改banner
sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头,…...