Codeforces Round 979 (Div. 2) A~C

2024 年 10 月 23 日 星期三(已编辑)
/
74
2
这篇文章上次修改于 2024 年 10 月 23 日 星期三,可能部分内容已经不适用,如有疑问可询问作者。

Codeforces Round 979 (Div. 2) A~C

本场链接 D泰难,看下别人代码,看明白了有时间再更

A.A Gift From Orangutan

签到题,不难发现只要把最大数放在第一个和最小数放在第二个就能满足题意,直接交

int n;
cin >> n;
int max = -1,min = 0x3f3f3f3f;
for(int i = 1;i <= n;i++){
    cin >> a[i];
    max = std::max(a[i],max);
    min = std::min(a[i],min);
}
cout << (max - min)*(n - 1) << '\n';

B. Minimise Oneness

f(t)=2cnt01,g(t)=2cnt0(2cnt11)f(t)=2^{cnt_0}–1,g(t)=2^{cnt_0}*(2^{cnt_1} - 1)

因此只需要有一个1就好

void solve(){
    int n;
    cin >> n;
    cout << 1;
    for(int i = 1;i <= n - 1;i++){
        cout << 0;
    }
    cout << '\n';
}

C.A True battle

如果开头或者结尾是1,只需要添加or就行,如果有两个连续1,在其之间添加and,边上添加or,就能全部是1,判断这样的条件即可

void solve(){
  int n;
  cin >> n;
  std::string a;
  cin >> a;
  if(a.front() == '1'){
      cout << "YES" << '\n';
      return;
  }
  if(a.back() == '1'){
      cout << "YES" << '\n';
      return;
  }
  for(int i = 1;i < a.size();i++){
      if(a[i] == a[i - 1] && a[i] == '1'){
          cout << "YES\n";
          return;
      }
  }
  cout << "NO\n";
}

D.QED's Favorite Permutation

依然是看到D题没有思路,希望多做会有进步

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...