Educational Codeforces Round 151 (Rated for Div. 2) A和B

文章提供了两道编程竞赛题目——ForbiddenInteger和ComeTogether的解析。ForbiddenInteger中,讨论了如何使用1到k的数字(除去x)来表示n,涉及数论知识和条件判断。ComeTogether则关注于计算两点间路径的最短长度,涉及到二维空间中的几何问题和位置判断。

题目链接

A:Forbidden Integer

题意:给你整数n ,k , x ,用1 ~ k 除了x以外的数去表示n(数的和等于n )

题解 :明显可知,当x不等于1时,n能用n个1去表示 , 当x等于1时,明显当k也等于1时,无解,当k等于2时,n只有偶数才能被表示;当k大于2时,由数论知识得知,任何数都能被2 ,3叠加表示;

AC代码

#include<iostream>
#include <cstring>
#include <algorithm>

using namespace std;

void solved()
{
	int n,k,x;
    cin >> n >> k >> x;
 
    if (x != 1)
    {
        cout << "YES" << endl;
        cout << n << endl;
        for (int i = 1; i <= n; i++) cout << 1 << " ";
        cout << endl;
    }
    else
    {
        if (k == 1 || ((n & 1) && k < 3)) cout << "NO" << endl;
        else
        {
            cout << "YES" << endl;
            if (n % 2 == 0)
            {
                cout << n / 2 << endl;
                while (n)
                {
                    cout << 2 << " ";
                    n -= 2;
                }
                cout << endl;
            }
            else
            {
                cout << 1 + (n - 3) / 2 << endl;
                cout << 3 << " ";
                n -= 3;
                while (n)
                {
                    cout << 2 << " ";
                    n -= 2;
                }
                cout << endl;
            }
        }
    }
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    
    cout.tie(0);
    
    int t = 1;
    cin >> t;

    while(t -- )
        solved();

    return 0;
}

B. Come Together

题意:给你A, B, C的坐标,去计算A-C和A-B的最短路径重合的路径长度

题解:只需判断B与C相对A的位置,如果BC都在A的同一方(左或右),当同时在上下方的一方时那么答案为min(abs(x[0] - x[1]) , abs(x[0] - x[2])) + min(abs(y[0] - y[1]) , abs(y[0] - y[2]));,否则min(abs(x[0] - x[1]) , abs(x[0] - x[2]));,如果BC不在同一左右方时 ,如果同时在上下方的一方则答案为min(abs(y[0] - y[1]) , abs(y[0] - y[2]));,否则没有,因为起点算一个,所以答案为上述在+1

AC代码

#include<iostream>
#include <cstring>
#include <algorithm>

using namespace std;

void solved()
{
	LL x[3] , y[3];
	for(int i = 0 ; i < 3 ; i ++ ) cin >> x[i] >> y[i];
	
	LL sum = (x[0] - x[1]) * (x[0] - x[2]);
	LL cnt = (y[0] - y[1]) * (y[0] - y[2]);
	
	LL ans = 1;
	if(sum >= 0)
	{
		if(cnt >= 0) ans += min(abs(x[0] - x[1]) , abs(x[0] - x[2])) + min(abs(y[0] - y[1]) , abs(y[0] - y[2]));
		else ans += min(abs(x[0] - x[1]) , abs(x[0] - x[2]));
	}else 
	{
		if(cnt >= 0) ans += min(abs(y[0] - y[1]) , abs(y[0] - y[2]));
		else ans = 1;
	}
	
	cout << ans << endl;
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    
    cout.tie(0);
    
    int t = 1;
    cin >> t;

    while(t -- )
        solved();

    return 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级选手设计的教育性比赛,旨在提高他们的编程技能算法能力。参与这样的比赛可以为选手提供学习进步的机会,同时也促进了编程社区的交流与合作。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值