首页 > 其他分享 >牛客小白月赛:84

牛客小白月赛:84

时间:2023-12-23 09:11:09浏览次数:30  
标签:分数 gcd int 牛客 solve 数组 小白月赛 lcm 84

A、打靶

跳转原题点击此:A题地址

1、题目大意

  小蓝在玩打靶游戏,每打到一个靶子得1分,当前一共n个靶子,还剩m个靶子没打,并且小蓝当前的分数是x,问当全部打完后分数是否有可能为y分。

2、题目解析

  注意,小蓝有可能分数为空和当前分数大于y分。所以只要当前分数大于y分或者剩余的靶子不足以支撑其分数达到y分,否则就有可能达到y分。

#include<bits/stdc++.h>

using namespace std;

int t;
int n, m, x, y;

void solve()
{
	cin >> n >> m >> x >> y;
	int tmp1 = n - m;
	int tmp2 = y - x;
	// 如果当前分数大于y分或者剩余的靶子不足以支撑其分数达到y分
    // 则输出No
	if(tmp1 < tmp2 || x > y)
		cout << "No" << endl;
	else
		cout << "Yes" << endl;
}

int main()
{
	cin >> t;
	while (t--)
	{
		solve();
	}

	return 0;
}

 

B、打靶

跳转原题点击此:B题地址

1、题目大意

  给定gcd(a, b) 和 lcm(a, b)这两个数,要你求出符合gcd和lcm的a和b,如果有多个答案队,则输出a最小的答案队;如果a相等,则输出a最小同时b最小的答案对。如果无法求出a、b,则输出-1。

2、题目解析

  数学知识:gcd(a, b) * lcm(a, b) == a * b; 同时因为a是最小的,则a只可能是gcd(a, b),因为最大公约数的最小值就是其本身 ,所以根据前面的数学知识,b就为lcm(a, b)。如果给定的gcd不是lcm的因子,则无法得到答案,输出-1:因为gcd是a和b的因子,而a和b又是lcm的因子,所以gcd是lcm的因子。

#include<bits/stdc++.h>

using namespace std;

int t;
int x, y;

void solve()
{
	cin >> x >> y;
	if(y % x != 0)
	{
		cout << -1 << endl;
		return;
	}
	cout << x << " " << y << endl;
}

int main()
{
	cin >> t;
	while (t--)
	{
		solve();
	}

	return 0;
}

 

C、K级数列

跳转原题点击此:C题地址

1、题目大意

  给定一个序列a和k值,询问是否存在一个数列b,使得\(|a_i - b_i| \le k\),其中\(i 为 [1,n]\),并且b数组为非递减数组。

2、题目解析

  因为\(|a_i - b_i| \le k\),所以\(b_i\)的取值范围就是\([a_i - k, a_i + k]\),因为要满足b数组是非递减,所以贪心要尽可能选择b数组满足条件的同时尽可能小
  又因为只要a数组后一个数比前一个数大,就一定有答案,否则前面的数也无解。
  所以,如果a数字当前的数的取值范围\(a_i + k\)比前一个数的最小选择范围还要小,则无解。

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

const int N = 2e5+10;

int t;
int n, k;
int f[N], l[N], r[N];

void solve()
{
	cin >> n >> k;
	for(int i = 1; i <= n; i++)
	{
		cin >> f[i];
        // 找出a数组每个数的范围,存入l和r数组中
		l[i] = f[i] - k;
		r[i] = f[i] + k;
	}
	
	int tmp = l[1];
	for(int i = 2; i <= n; i++)
	{
        // 如果后一个数的范围大于等于前一个数的最小范围,则肯定有解
        // 此时,贪心选择能满足条件(b非递减)的数,
		if(r[i] >= tmp)
			tmp = max(tmp, l[i]);
        // 否则无解
		else
		{
			cout<<"No\n";
			return;
		}
	}
	cout<<"Yes\n";
	
}

int main()
{
	cin >> t;
	while (t--)
	{
		solve();
	}

	return 0;
}

 

D、E、F有能力再更新。

标签:分数,gcd,int,牛客,solve,数组,小白月赛,lcm,84
From: https://www.cnblogs.com/Tom-catlll/p/17922595.html

相关文章

  • 地图坐标转换 WGS84、BD09与GCJ02的相互转换
    高德地图WGS84转GCJ02exportfunctionwgs84ToGcj02(lng,lat){if(out_of_china(lng,lat)){return[lng,lat]}else{vardlat=transformlat(lng-105.0,lat-35.0)vardlng=transformlng(lng-105.0,lat-35.0)......
  • GEE好文推荐——利用样本点迁移方法快速实现全球范围内1984年至今基于Landsat影像的土
    最近我新发表了一篇新的文章,也就是利用样本点迁移的方法来快速实现全球长时序快速土地分类,本文发布了应用APP,用户可以在线体验使用快速分类的效果。原文链接:Land|FreeFull-Text|RapidLandCoverClassificationUsinga36-YearTimeSeriesofMulti-SourceRemoteSensing......
  • 1842_emacs使用company-irony实现C语言的自动补全
    Grey全部学习内容汇总:GitHub-GreyZhang/editors_skills:SummaryforsomecommoneditorskillsIused.1842_emacs使用company-irony实现c语言的自动补全irony-mode是一个自动补全的实现方案,配合company集成之后效果非常好。简单调试完了之后,基本上能够确定这是我这么多年来使......
  • 84道Spring高频题整理(附答案背诵版)
    解释一下Spring框架?Spring框架是一个开源的企业级应用开发框架,由RodJohnson创建,并于2003年首次发布。Spring是在全方位提供企业级服务的基础上,用Java实现的。Spring的核心思想是使现代Java开发更加简单。Spring框架以其灵活性和透明性闻名,几乎可以用在任何Java环境中。Sprin......
  • 牛客周赛 Round 24
    牛客周赛Round24比赛地址最后一题没想到用二分做,可惜可惜,思考的方向错了A小红的矩阵构造题目链接思路:主要是区分一下n是奇数还是偶数,是奇数的话就正常输出就行,是偶数的话就可以把偶数行逆着输出代码:#include<bits/stdc++.h>usingnamespacestd;voidsolve(){ intn......
  • 牛客小白月赛83
    总结&&吐槽:这场Bwa了13发,笑死人了,真的会有这么菜的人么,读错题目了。下次读b这种题的时候要更加细心一点。D.小天的子序列题目大意:给定一个字符串全部由小写字母组成,然后又若干次查询,问有多少个以字符x开头以字符y结尾,并且长度为k。思路分析:发现只要找到了x和y,那么只要长......
  • CF1784C Monsters (hard version) 题解 线段树
    题目链接:https://codeforces.com/problemset/problem/1784/C题目大意:你面前有\(n\)只怪兽,每只怪兽都有一个初始血量,你可以进行两类操作:操作1:选择任意一个血量大于\(0\)的怪兽,并将它的血量降低\(1\);操作2:将所有存活的怪物的血量各自减去\(1\),如果存在怪物的血量恰好降为......
  • 2023全球开发者生态调研:84%的开发者表示他们在工作中正积极使用生成式AI工具
    今年JetBrains首次在一年一度的开发者生态调研中,增加了人工智能方向的问题。在全球26348名开发者参与的调研中,总体对人工智能的发展持乐观态度。特别是生成式AI在软件开发和编程环节中的应用,84%的开发者表示他们在工作中正在积极使用生成式AI工具。调研中显示,AI文本生成工具比代......
  • 2023 牛客多校 9 B
    给定\(1\lea<m\le10^9\),求\(1\leu\le10^{18}\)使得\(a^u\equivu\pmodm\)。做法先考虑不限制解的大小怎么做。显然有如果\(a^v\equivv\pmod{\varphi(m)}\),且\(v\ge\varphi(m)\),则\(a^{a^v}\equiva^v\pmodm\),于是取\(u=a^v+m\varphi(m)......
  • 牛客Java题目练习
    Java用监视器机制实现了线程之间的同步执行。byteb=(byte)129的值是-127,因为byte的存储数字范围为[-128,127],在计算机中,数值用补码表示,相当于一个环,因此是-127。一个Java源程序文件中定义几个类和接口,则编译该文件后生成几个以.class为后缀的字节码文件。错误,因为忽略......