Atcoder Panasonic Programming Contest 2020 部分题解

上课上到一半被拉出来打这场。结果被教育了。

题目链接

做题顺序: A(AC)->B(WA)->E(未交)->C(AC)->E(WA)->D(AC)->B(AC)->E(WA)

A:上来直接把下标写成\(n\)\(n+1\),结果 \(WA\) 两次,直接心态爆炸

代码就不放了。

B

题意:\(n \times m\) 的棋盘上,一个棋子被放在 \((1,1)\) 位置,每次它能移动到所有 \(x + y\)\(x - y\) 相等的格子上,问一共能访问多少个格子

看样例,答案就是 \(\left\lceil\dfrac{n \times m}{2}\right\rceil\) 哈哈哈哈

结果 \(WA\)

因为 \(n = 1\)\(m = 1\) 时,它不能移动到其他任何一个格子上,所以答案是 \(1\)

\(76\) min 过了这题

int main()
{
    cin>>a>>b;
    if(a > b) swap(a,b);
    if(a == 1) cout<<1<<endl;
    else cout<<(ll)((ll)a*b+1)/2;
    return 0;
}

C:

判断 \(\sqrt a + \sqrt b\) 是否小于 \(\sqrt c\)

刚开始想判掉相等到情况再直接比较,结果又 \(WA\)

正确解法:两边平方,移项,再平方,得到:

\[4ac < (c - a - b)^2\]

还可以注意到:\(c < a + b\) 时一定非法,要判掉

ll a,b,c;
int main()
{
    cin>>a>>b>>c;
    if(c - a - b >= 0 && 4 * a * b < (c - a - b) * (c - a - b)) puts("Yes");
    else puts("No");
    return 0;
}

D:等会补

猜你喜欢

转载自www.cnblogs.com/yz-beacon-cwk/p/12502909.html