LoginSignup
1
0

More than 3 years have passed since last update.

競プロ初心者挑戦日記day1【ABC175】

Posted at

自己紹介

はじめまして!大学3年のlygumiです。
今回から競プロ始めていきたいと思います。
(この記事作成するのも一苦労……先が思いやられる…)
プログラミングできたらかっこいいな…っていう動機で始めてみました!(PCとかスマホが使えてるこの時代凄くないですか??中身知りたいって思いますよね!!)
そんなこんなで手探りで始めてみました!
(密かにIT系に就職したいと思ってる)
今日までにやった勉強は

の主に3つです

A問題

早速問題に移ります

  • 所要時間:10分
  • 一発AC

解答

ABC175_A
#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for(int i = 0; i < (int)(n); i++)

int main(){
  string s; cin >> s;
  if(s == "RRR") cout << 3 << endl;
  else if(s == "RRS" || s== "SRR") cout << 2 << endl;
  else if(s == "RSR" || s == "SRS" || s == "SSR" || s == "RSS") cout << 1 << endl;
  else if(s == "SSS") cout << 0 << endl;
  return 0;
}  

B問題

意外と手間取ってしまいました
原因:問題文の条件の見落とし

  • 所要時間:40分
  • 一発AC

解答

ABC175_B
#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for(int i = 0; i < (int)(n); i++)

int main(){
  int n, ans = 0; cin >> n;
  vector<int> num(n);
  rep(i, n){
    cin >> num.at(i);
  }  
  for(int i = 0; i < n - 2; i++){
    int a, b, c; 
    for(int j = i + 1; j < n - 1; j++){
      for(int k = j + 1; k < n; k++){
        a = num.at(i); b = num.at(j); c = num.at(k);
        if(a == b || b == c || a  == c) continue;
        if(a < b) swap(a, b);
        if(a < c) swap(a, c);
        if(b < c) swap(b, c);
        if(a + b > c && a - b < c) ans++;
      }
    }
  }  
  cout << ans << endl;
  return 0;
}

C問題

これが解けず終わってしまいました
bit全探索でできたと思ったものの

  • AC×13
  • WA×11
  • TLE×7

という結果となり、そもそもbit全探索も不完全な状態であった

  • bit全探索だと思ってしまった…(数が大きすぎることに気づくべし)

問題文

解答

ABC175_C
#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for(int i = 0; i < (int)(n); i++)

int main(){
  int64_t x, k, d, ans = 10000000000000000; cin >> x >> k >> d;
  int64_t y = x;
  rep(i, 1 << k){
    rep(j, k){
      if((i >> j) & 1) y += d;
      else y -= d;
      //cout << y << endl;
    }
    //cout << y << endl;
    if(y < 0) y = -y;
    if(ans > y) ans = y;
    y = x; 
  }
  cout << ans << endl;
  return 0;
}

反省

良かった点

  • bit全探索の発想ができた(そもそも違ったけど…)
  • 楽しんでできた

悪かった点

  • B問題に時間を取られすぎた
  • C問題の制約をよく吟味していなかった

Rate

0→10になりました!
10回程度コンテストに参加するとrateが本来の値に近づくみたいなので辛抱強くコンテスト参加していきたいと思います!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0