Mynavi Programming Contest 2021(AtCoder Beginner Contest 201)

Mynavi Programming Contest 2021(AtCoder Beginner Contest 201)

  • A Tiny Arithmetic Sequence
  • B - Do you know the second highest mountain?
  • C - Secret Number
  • D - Game in Momotetsu World

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 

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

D记忆化搜索题解

题意:给定一个棋盘,左上角有一个棋子,现在A和B交替移动棋子,A先移动。棋子只能向下移动或者向右移动。棋盘的每个格子都有+或这-,移动当前棋子到+可以得到一分,移动到-则会相应的减掉一分。现在问,谁会赢。

题解:DP来求(我做题的时候,只知道要用DP来求,但是怎么都写不出来)

你可能感兴趣的:(AtCoder)