Codeforces Round #783 (Div. 2)

本来早上要补的,vp的时候玩了一会游戏然后没用然后了

Dashboard - Codeforces Round #783 (Div. 2) - Codeforces

下午上课补了,真的

不写long long谁是狗,真的

A:从1,1到n,m,不能连续走两格同一个方向,求最小步数

先统一n小m大,从1,1走到n,n要n*2步,且最后一步往右,因此后面直接折叠往下走就ok

需要特判

#include<iostream>
using namespace std;
int main()
{
	int _,n,m;
	cin >> _;
	while (_--)
	{
		int ans;
		cin >> n >> m;
		n = n - 1;
		m = m - 1;
		if (n > m) swap(n, m);
		int k = m - n;
		if (k % 2 == 0)

		{
			ans = n + n + k * 2;
		}
		else
		{
			ans = n + n + (k - 1) * 2 + 1;
		}
		if (n == 0 && m > 1)ans = -1;
		cout << ans << "\n";
	}
}

B:按照从大到小排列,最大值使用2次,最小值使用0次,其他使用1次,ok

十年oi一场空,不写longlong见祖宗

#include<iostream>
#include<algorithm>
using namespace std;
int x[100005];
int main()
{
	int _,n,m;
	cin >> _;
	while (_--)
	{
		long long ans = 0;
		cin >> n >> m;
		for (int i = 1; i <= n; i++)
		{
			cin >> x[i];
			ans += x[i];
		}
		if (n > m) {
			cout << "NO" << '\n';
			continue;
		}
		sort(x + 1, x + 1 + n);
		ans = ans + n + x[n] - x[1];
		if (ans > m)
			cout << "NO\n";
		else
			cout << "YES\n";
	}

}

C:枚举值为0的位,形成山谷(bushi),复杂度(n^2)

谁能想到我wa是因为longlong 和最大值初始化的时候太小了捏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值