Educational Codeforces Round 89 (Div. 2)

A. Shovels and Swords

讨论一下大小。

AC代码:

int n, m, k;
 
int main()
{
	int t;
	sd(t);
	while (t--)
	{
		sdd(n, m);
		int ans = 0;
		if (n > m)
			swap(n, m);
		if (2 * n <= m)
			ans = n;
		else
		{
			k = m - n;
			ans += k;
			m -= 2 * k;
			n -= k;
			ans += 2 * (n / 3);
			n %= 3;
			if (n == 2)
				ans += 1;
		}
		pd(ans);
	}
	return 0;
}

B. Shuffle

找可以覆盖的区间大小。

AC代码:

int n, m, k, x;
int l, r;
int main()
{
	int t;
	sd(t);
	while (t--)
	{
		sddd(n, x, m);
		int a = x, b = x;
		rep(i, 1, m)
		{
			sdd(l, r);
			if (l <= a && b <= r)
				a = l, b = r;
			else if (l <= a && a <= r)
				a = l;
			else if (b <= r && b >= l)
				b = r;
		}
		int ans = b - a + 1;
		pd(ans);
	}
	return 0;
}

C. Palindromic Paths

统计每个条路径每个位置的 0 0 0 1 1 1 的个数,然后找到变化最小的。

AC代码:

const int N = 5e2 + 50;
int n, m, k, x;
map<int, int> mp[N];
int main()
{
	int t;
	sd(t);
	while (t--)
	{
		sdd(n, m);
		rep(i, 1, n + m)
		{
			mp[i].clear();
		}
		rep(i, 1, n)
		{
			rep(j, 1, m)
			{
				sd(x);
				if ((n + m) % 2 == 0 && i + j == (n + m + 2) / 2)
					continue;							//路程中间位置
				mp[min(i + j, n + m + 2 - i - j)][x]++; //第几步
			}
		}
		int ans = 0;
		rep(i, 1, n + m)
		{
			int maxn = 0, sum = 0;
			for (auto j : mp[i])
				maxn = max(maxn, j.se), sum += j.se;
			ans += sum - maxn;
		}
		pd(ans);
	}
	return 0;
}

D. Two Divisors

如果 d 1 , d 2 d_1,d_2 d1,d2 互质,那么 d 1 + d 2 , d 1 ∗ d 2 d_1+d_2,d_1*d_2 d1+d2,d1d2 互质。只要找到 d 1 ∗ d 2 = a d_1*d_2=a d1d2=a d 1 , d 2 d_1,d_2 d1,d2 互质的两个数 d 1 , d 2 d_1,d_2 d1,d2

AC代码:

const int N = 1e7 + 50;
int n, m, k, x;
int a[N], rec[N];
bool vis[N];
vector<PII> ans;
void get_prime(int n)
{
	int cnt = 0;
	vis[1] = 1;
	rep(i, 2, n)
	{
		if (!vis[i])
			a[cnt++] = i, rec[i] = i;
		rep(j, 0, cnt)
		{
			if (i * a[j] > n)
				break;
			vis[i * a[j]] = 1;
			rec[i * a[j]] = a[j];
			if (i % a[j] == 0)
				break;
		}
	}
}

int main()
{
	int t;
	get_prime(N - 10);
	sd(n);
	rep(i, 1, n)
	{
		sd(x);
		int p = rec[x], y = 1;
		if (p > 1)
			while (x % p == 0)
				x /= p, y *= p;
		if (x > 1 && y > 1)
			ans.pb({x, y});
		else
			ans.pb({-1, -1});
	}
	for (auto i : ans)
		printf("%d ", i.fi);
	printf("\n");
	for (auto i : ans)
		printf("%d ", i.se);
	printf("\n");
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"educational codeforces round 103 (rated for div. 2)"是一个Codeforces平台上的教育性比赛,专为2级选手设计评级。以下是有关该比赛的回答。 "educational codeforces round 103 (rated for div. 2)"是一场Codeforces平台上的教育性比赛。Codeforces是一个为程序员提供竞赛和评级的在线平台。这场比赛是专为2级选手设计的,这意味着它适合那些在算法和数据结构方面已经积累了一定经验的选手参与。 与其他Codeforces比赛一样,这场比赛将由多个问题组成,选手需要根据给定的问题描述和测试用例,编写程序来解决这些问题。比赛的时限通常有两到三个小时,选手需要在规定的时间内提交他们的解答。他们的程序将在Codeforces的在线评测系统上运行,并根据程序的正确性和效率进行评分。 该比赛被称为"educational",意味着比赛的目的是教育性的,而不是针对专业的竞争性。这种教育性比赛为选手提供了一个学习和提高他们编程技能的机会。即使选手没有在比赛中获得很高的排名,他们也可以从其他选手的解决方案中学习,并通过参与讨论获得更多的知识。 参加"educational codeforces round 103 (rated for div. 2)"对于2级选手来说是很有意义的。他们可以通过解决难度适中的问题来测试和巩固他们的算法和编程技巧。另外,这种比赛对于提高解决问题能力,锻炼思维和提高团队合作能力也是非常有帮助的。 总的来说,"educational codeforces round 103 (rated for div. 2)"是一场为2级选手设计的教育性比赛,旨在提高他们的编程技能和算法能力。参与这样的比赛可以为选手提供学习和进步的机会,同时也促进了编程社区的交流与合作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值