Codeforces Round #605 (Div. 3)

Update: 这次题解可能要鸽一阵子,因为我好多算法还不会,所以有些题目不太理解,等我学完基础算法再来补。

第一次打Codeforces,虽然我现在还什么都不会,但也能做出两题,还不错哦。打Codeforces还挺好玩的,之后要多打一打。

Editorial

https://codeforces.com/blog/entry/72132

Problem A. Three Friends

题意

有3个人,分别在x轴的a, b, c三个位置,在一分钟之内,每个人可以向左或者向右移动一个位置,也可以不移动。一分钟之后,每个人的最终位置为a’, b’, c’,求 ∣ a ′ − b ′ ∣ + ∣ a ′ − c ′ ∣ + ∣ b ′ − c ′ ∣ |a' - b'| + |a' - c'| + |b' - c'| ab+ac+bc的最小值。

题解

这是一个简单模拟题,可以用一个嵌套循环遍历a’, b’, c’的最终的三种情况: a ′ = { a − 1 , a , a + 1 } a' = \{a-1, a, a+1\} a={a1,a,a+1} b ′ = { b − 1 , b , b + 1 } b' = \{b-1, b, b+1\} b={b1,b,b+1} c ′ = { c − 1 , c , c + 1 } c' = \{c-1, c, c+1\} c={c1,c,c+1},求出其中的最小值。

代码

#include <bits/stdc++.h>

using namespace std;

int calc(int a, int b, int c)
{
	return abs(a - b) + abs(a - c) + abs(b - c);
}

int main()
{
	int q;
	cin >> q;
	for(int i = 0; i < q; i++)
	{
		int a, b, c;
		cin >> a >> b >> c;

		int ans = calc(a, b, c);
		for(int da = -1; da <= 1; da++)
			for(int db = -1; db <= 1; db++)
				for(int dc = -1; dc <= 1; dc++)
				{
					int na = a + da;
					int nb = b + db;
					int nc = c + dc;
					ans = min(ans, calc(na, nb, nc));
				}
		cout << ans << endl;
	}
}

Problem B. Snow Walking Robot

题意

题解

代码

Problem C. Yet Another Broken Keyboard

题意

题解

代码

Problem D. Remove One Element

题意

题解

代码

Problem E. Nearest Opposite Parity

题意

题解

代码

Problem F. Two Bracket Sequences

题意

题解

代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值