2024牛客寒假算法基础集训营1部分题解

2024-02-03 20:04

本文主要是介绍2024牛客寒假算法基础集训营1部分题解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

// 能力有限,做多少发多少。

A-DFS搜索

题目描述 

最近,fried-chicken完全学明白了DFS搜索(如上图所示)!于是学弟向他请教DFS搜索,fried-chicken热心的进行了讲解:

所谓DFS搜索,就是给定一个字符串�s,问能否找到�s的一个子序列,使得该子序列的值为 DFS 或 dfs。

请你分别判断字符串�s中是否含有 DFS 子序列与 dfs 子序列。

子序列的定义:从原字符串中选择一些字符,将这些字符按照其在原串中的顺序拼接起来,得到的就是原字符串的一个子序列。例如:ABCDA的子序列可以为ACA、ABCDA、BA等等,但不能为ABE、CBA、AAD。

输入描述:

输入的第一行包括一个正整数�(1≤�≤100)T(1≤T≤100),表示测试用例的组数。对每组测试用例,第一行是一个正整数�(1≤�≤50)n(1≤n≤50),表示输入字符串的长度。第二行是一个长度为�n的字符串�s,保证字符串中只含有英语小写字母与英语大写字母。

输出描述:

对于每组测试用例,输出空格分隔的两个数字,第一个数字表示是否含有 DFS 子序列,第二个数字表示是否含有 dfs 子序列。输出 1 表示含有,输出 0 表示不含有。

示例1

输入

复制

5
6
dafasa
6
dDFfSs
6
sfdDSF
6
DFSDFS
3
dfs

输出

复制

0 1
1 1
0 0
1 0
0 1

//刚开始想到的是find函数,后面发现不连续也可以,后面又怕下面种方法会超时,七弄八弄了不少时间。

#include<bits/stdc++.h>
using namespace std;
int main(){int t,n;string s;cin>>t;while(t--){int a=0,b=0;cin>>n;getchar();getline(cin,s);for(int i=0;i<n;i++){if(s[i]=='D'){for(int j=i+1;j<n;j++){if(s[j]=='F'){for(int k=j+1;k<n;k++){if(s[k]=='S')a=1;}}}}}for(int i=0;i<n;i++){if(s[i]=='d'){for(int j=i+1;j<n;j++){if(s[j]=='f'){for(int k=j+1;k<n;k++){if(s[k]=='s')b=1;}}}}}cout<<a<<' '<<b<<endl;}return 0;
}

E-why买外卖

题目描述

鸡很饿,鸡要吃外卖,今天点份炸鸡外卖!

鸡使用的外卖程序有若干个满减优惠,第iii个优惠可以表示为"满aia_iai​元减bib_ibi​元",多个满减优惠可以叠加。

满减的具体结算流程是:假设鸡购买的食物原价共为xxx元,则所有满足x≥aix\ge a_ix≥ai​的满减优惠都可以一起同时被使用,优惠后价格记为yyy,则鸡只要支付yyy元就可以了(若y≤0y\leq 0y≤0则不需要支付)。

现在,鸡的手机里一共只有mmm元钱,鸡想知道,他所购买的食物原价xxx最多为多少。

输入描述:

输入第一行包括一个整数T(1≤T≤104)T(1\leq T\leq 10^4)T(1≤T≤104),样例组数。对于每组样例,第一行输入两个整数n,m(1≤n≤105,1≤m≤109)n,m(1\leq n\leq 10^5, 1\leq m\leq 10^9 )n,m(1≤n≤105,1≤m≤109),含义如题面所述。接下来的nnn行,每行输入两个正整数ai,bi(1≤ai,bi≤109)a_i,b_i(1\leq a_i,b_i\leq 10^9)ai​,bi​(1≤ai​,bi​≤109),表示一个满减优惠。保证所有样例的Σn≤105\Sigma n\leq 10^5Σn≤105。

输出描述:

对每组用例,输出一个整数,表示鸡能购买的食物原价xxx最多为多少。

示例1

输入

复制4 1 10 100 80 2 10 30 10 100 90 3 10 100 30 100 30 100 30 2 10 21 10 1000 1

4
1 10
100 80
2 10
30 10
100 90
3 10
100 30
100 30
100 30
2 10
21 10
1000 1

输出

复制10 110 100 10

10
110
100
10

下面两个longlong定义的变量很关键,就差这儿。 

#include<bits/stdc++.h>
using namespace std;
struct xx{int a,b;
}s[100005];
bool cmp(xx x,xx y){return x.a>y.a;
}
int main(){int t,n,i;long long m,y;cin>>t;while(t--){cin>>n>>m;y=m;for(i=0;i<n;i++){cin>>s[i].a>>s[i].b;y+=s[i].b;}sort(s,s+n,cmp);for(i=0;i<n;i++){if(y>=s[i].a)m+=s[i].b;else y-=s[i].b;//这步很重要。}cout<<m<<endl;}return 0;
}

E-牛客老粉才知道的秘密

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

题目描述

现在,在本次比赛的主页点击"排名",您就会看到本场比赛的榜单,可以看到,榜单中直接列出了本场比赛的所有题目。

现在,作为牛客老粉,炸鸡想用这道题给大家科普一下牛客以前榜单的愚蠢之处:

牛客以前的榜单并不是现在这样,而是至多同时只显示六道题目。同时榜单上还有"向左"按钮与"向右"按钮来切换显示的题目。以"向右"按钮为例,点击一次该按钮会显示接下来的六道题,特别的,如果接下来的六道题超出了总题数,则会将最后一题放到当前显示的最右侧。"向左"按钮同理。

现在,你需要回答,对于nnn道题的一场比赛,显示的六道题目中最左侧的题目一共有几种可能取值。

以下面共n=14n=14n=14道题的情况为例:

 



初始时,显示了 A 到 F;点击一次"向右",显示了 G 到 L;再点击一次"向右",此时由于剩余题数不足六题,显示的六道题是 I 到 N;此时不能继续点击"向右",点击一次"向左",显示的六道题是 C 到 H;再点击一次"向左",由于剩余题数不足六题,显示的六道题是 A 到 F。

上述过程中,显示的六道题中,最左侧的题目编号分别是 A、G、I、C、A,因此答案为 4。

输入描述:

输入的第一行包括一个正整数T(1≤T≤105)T(1\leq T\leq 10^5)T(1≤T≤105),表示测试用例的组数。每组测试用例输入一个正整数n(6≤n≤109)n(6\leq n\leq 10^9)n(6≤n≤109),表示本场比赛的总题目数。

输出描述:

对每组测试用例,输出一个整数,表示显示的六道题目中最左侧的题目一共有几种可能取值。

示例1

输入

复制2 14 6

2
14
6

输出

复制4 1

4
1

//找规律

#include<bits/stdc++.h>
using namespace std;
int main(){int t,n;cin>>t;while(t--){cin>>n;if(n<=6)cout<<1<<endl;else {if(n%6==0)n/=6;else n=(n/6)*2;cout<<n<<endl;}}return 0;
}

这篇关于2024牛客寒假算法基础集训营1部分题解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/675243

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO