牛客小白月赛102

A-序列中的排列

要求:在一个序列中判断是否存在k的排列

思路:先记录读入的序列中包含哪些数字,再从记录中找1~k是否都存在,只要有一个不存在就说明不存在这个排列

cpp 复制代码
int n,k;

void solve()
{
	cin >> n >> k;
	vector<int> v;
	map<int,int> mp;
	
	for (int i = 1;i <= n;i ++) 
	{
		int x; cin >> x;
		v.pb(x);
		mp[x] ++;
	}
	
	for (int i = 1;i <= k;i ++)
	{
		if (mp[i] == 0) 
		{
			cout << "NO" << endl;
			return ;
		}
	}
	
	cout << "YES" << endl;
}

B-连分数

考察极限的相关东西??

思路:由题意可知 n趋向正无穷时f(n) = x,那么f(n - 1)也可以为x ,依照题意可得 x = a + 1 / x ===> x^2 - ax - 1 = 0;再由求根公式就可以计算出x的值

cpp 复制代码
double a;

void solve()
{
	cin >> a;
	double x = (a + sqrt(a * a + 4)) / 2;
	cout << fixed << setprecision(15) << x << endl;
}

C-sum

思路:

若数组之和小于 sum ,则将最小的数变成最大(1e4),直到数组之和大于 sum,如果可以实现跨越则说明0~1e4中存在一个数可以使得数组之和满足要求

若数组之和大于 sum ,则将最大的数变成最小(-1e4),直到数组之和小于 sum,如果可以实现跨越则说明-1e4~0中存在一个数可以使得数组之和满足要求

cpp 复制代码
const int N = 2e5 + 9; 

int n,m;
int a[N];

void solve()
{
	cin >> n >> m;
	LL sum = 0;
	LL ans = 0;
	for (int i = 1;i <= n;i ++) cin >> a[i],sum += a[i];
	
	sort(a + 1,a + n + 1);
	
	if (sum == m) cout << 0 << endl;
	else if (sum > m)
	{
		for (int i = n;i >= 1;i --)
		{
			sum -= (a[i] + 1e4);
			ans ++;
			if (sum <= m) 
			{
				cout << ans << endl;
				return;
			}
		}
	}
	else 
	{
		for (int i = 1;i <= n;i ++)
		{
			sum += (1e4 - a[i]);
			ans ++;
			if (sum >= m) 
			{
				cout << ans << endl;
				return;
			}
		}
	}
	

	
}
相关推荐
-To be number.wan1 小时前
C++ 赋值运算符重载:深拷贝 vs 浅拷贝的生死线!
前端·c++
YGGP1 小时前
【Golang】LeetCode 64. 最小路径和
算法·leetcode
古城小栈2 小时前
Rust变量设计核心:默认不可变与mut显式可变的深层逻辑
算法·rust
电商API&Tina3 小时前
跨境电商 API 对接指南:亚马逊 + 速卖通接口调用全流程
大数据·服务器·数据库·python·算法·json·图搜索算法
XXYBMOOO3 小时前
内核驱动开发与用户级驱动开发:深度对比与应用场景解析
linux·c++·驱动开发·嵌入式硬件·fpga开发·硬件工程
LYFlied3 小时前
【每日算法】LeetCode 1143. 最长公共子序列
前端·算法·leetcode·职场和发展·动态规划
长安er4 小时前
LeetCode 20/155/394/739/84/42/单调栈核心原理与经典题型全解析
数据结构·算法·leetcode·动态规划·
MarkHD4 小时前
智能体在车联网中的应用:第28天 深度强化学习实战:从原理到实现——掌握近端策略优化(PPO)算法
算法
能源系统预测和优化研究5 小时前
【原创代码改进】考虑共享储能接入的工业园区多类型负荷需求响应经济运行研究
大数据·算法
yoke菜籽5 小时前
LeetCode——三指针
算法·leetcode·职场和发展