Mynavi Programming Contest 2021(AtCoder Beginner Contest 201)
Mynavi Programming Contest 2021(AtCoder Beginner Contest 201))
导读:
简单的题目,只说明题意,或者直接说明结论
下面的难题,会做详细的解释和证明
A Tiny Arithmetic Sequence
判断这三个数是否可以组成一个等差序列
#define rep(i, n) for (int i = 0; i < n; i ++ )
int main(void)
{
int a[3];
rep(i,3) cin >> a[i];
if (a[0] << 1 == a[1] + a[2]
|| a[1] << 1 == a[0] + a[2]
|| a[2] << 1 == a[0] + a[1]){puts("Yes");}
else puts("No");
return 0;
}
B - Do you know the second highest mountain?
输出第二高的山峰的名字
#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < n; i ++ )
int main(void)
{
map<int, string> mp;
int n;
cin >> n;
rep(i, n)
{
string s; int x;
cin >> s >> x;
mp[x] = s;
}
int cnt = 0;
for (auto it : mp)
{
++ cnt;
if (cnt == n - 1)
{
cout << it.second;
return 0;
}
}
return 0;
}
C - Secret Number
暴力来吧。
给一个长度为10的串,o表示有当前下标的数,x表示没有当前下标的数,?表示不确定。
现在密码是一个四位数,请你输出能够确定的密码数
代码:
void work()
{
string s; cin >> s;
int ans = 0;
rep(i, 10000)
{
vector<bool> st(10);
int n = i;
rep(i, 4)
{
st[n % 10] = true;
n /= 10;
}
bool f = true;
rep(j, 10){
if (st[j] == true && s[j] == 'x') f = false;
if (st[j] == false && s[j] == 'o') f = false;
}
ans += f;
}
cout << ans << "\n";
}
D - Game in Momotetsu World
题意:给定一个棋盘,左上角有一个棋子,现在A和B交替移动棋子,A先移动。棋子只能向下移动或者向右移动。棋盘的每个格子都有+或这-,移动当前棋子到+可以得到一分,移动到-则会相应的减掉一分。现在问,谁会赢。
题解:DP来求(我做题的时候,只知道要用DP来求,但是怎么都写不出来)