This page looks best with JavaScript enabled

 ·  ☕ 3 min read · 👀... views

libraries:

  • mathjax
    title: “定期バチャ0608分お気持ち表明”
    date: 2020-06-13T11:49:12+09:00
    author: reud
    slug: a9e426295569f58690827b90058ed388
    categories:
  • バチャ

定期的にバチャを身内でやりたいので開催しました。

毎週コンテストのお気持ち表明が出来たら嬉しい限りです。

やっぱ・・・tunehiraさん・・・強いわ。

cheers

ページはここ

お気持ち表明は自分が取り組んだ問題に限ってやっていきます。

1 - チーム作り

B - チーム作り

かなり辛い問題。40番目で巡回していることは分かるので40であまりを取れば答えを場合分けで出せるが今回は制約が非常に緩いのでシミュレーションでも解ける。

制約10^16で出して欲しい(ワガママ)

コードをバグらせ続けたので非常に汚いコードが生まれた。こういった問題をさっと解ける様になりたいね。

提出 #14117021 - CODE FESTIVAL 2014 Easy

折角なので綺麗に解こうとする。

先述の通り所属チームは巡回するので受け取ったnを40で割った余りとnは同じ答えになる。

後は順位とチームから数列を導けば

cheers

後はプログラムに落とし込む

提出 #14207038 - CODE FESTIVAL 2014 Easy

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16

#include <bits/stdc++.h>
using namespace std;

void solve() {
    int n;
    cin >> n;
    n%=40;
    cout << (( n < 21 ) ? n : (41-n)) << endl;
}

int main() {
    solve();
    return 0;
}

2 - Acrostic

あまりを使うと綺麗に書けます。

提出 #14117105 - SoundHound Inc. Programming Contest 2018 -Masters Tournament-

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
using namespace std;

#define REP(i, n) for(int i=0, i##_len=(n); i<i##_len; ++i)

void solve() {
    string s;
    int w;
    cin >> s;
    cin >> w;
    REP(i,s.size()) if(i%w == 0) cout << s[i];
    cout << endl;
}

int main() {
    solve();
    return 0;
}

3 - Wanna go back home

よく考えれば戻って来れないパターンは(w,e),(s,n)のペアにおいてどちらかのペアについて片方はあるがもう片方がないという場合だけです。

すなわちその方角に行ったか行ってないかのだけ見れば良いのでw,e,s,nについて行ったことがあるかないかのbooleanを持てば良いです。

後はxorを取ればうまくいきます。

提出 #14207197 - AtCoder Grand Contest 003

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <bits/stdc++.h>
using namespace std;

void solve() {
  string str;
  cin >> str;
  set<char> st;
  for(const auto &it: str) {
      st.insert(it);
  }

  bool w = st.count('W');
  bool e = st.count('E');
  bool s = st.count('S');
  bool n = st.count('N');


  if((w!=e) || (s!=n)) cout << "No";
  else cout << "Yes";
  cout << endl;

}

int main() {
  solve();
  return 0;
}

4 - 旅館

予約者と部屋をリストに格納し降順にソートします。

予約者でforを回し,部屋[0]を見ます。部屋[0]は(利用可能な部屋の中で最も大きい部屋)なのでそこに入らなければ他に入る部屋はありません。
部屋[0]に入るならば部屋[0]をリストから削除します。 

これでO(N)で解けます。

提出 #14117620 - CODE FESTIVAL 2015 予選B

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <bits/stdc++.h>
#define INF 1e9
using namespace std;

#define REPR(i,n) for(int i=(n); i >= 0; --i)
#define REP(i, n) for(int i=0, i##_len=(n); i<i##_len; ++i)
#define ALL(a)  (a).begin(),(a).end()
#define endl "\n"

void solve() {
    int N,M;
    cin >> N >> M;
    vector<int> A(N),B(M);
    if (N < M) {
        cout << "NO" << endl;
        return;
    }
    REP(i,N) cin >> A[i];
    REP(j,M) cin >> B[j];
    sort(ALL(A));
    reverse(ALL(A));
    sort(ALL(B));
    reverse(ALL(B));
    for (const auto &b : B) {
        if (A[0] >= b)  A.erase(A.begin());
        else {
            cout << "NO" << endl;
            return;
        }
    }
    cout << "YES" << endl;

}

int main() {
    solve();
    return 0;
}

5 - 引越しできるかな?

出来ませんでした・・・

x,y,zの荷物は回転させることでスワップ可能です。

なので縦に荷物の一番長いもの辺、横にその次に長い辺、高さに一番短い辺を集めることで最小値を達成できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <bits/stdc++.h>
#define INF 1e9
using namespace std;

#define REPR(i,n) for(int i=(n); i >= 0; --i)
#define FOR(i, m, n) for(int i = (m); i < (n); ++i)
#define REP(i, n) for(int i=0, i##_len=(n); i<i##_len; ++i)
#define ALL(a)  (a).begin(),(a).end()
#define endl "\n"

template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
typedef long long ll;

void solve() {
    int C;
    cin >> C;
    int mx[3] = {};
    REP(_,C) {
        vector<int> v(3);
        cin >> v[0] >> v[1] >> v[2];
        sort(ALL(v));
        REP(i,3) chmax(mx[i],v[i]);
    }
    cout << mx[0] * mx[1] * mx[2] << endl;
}

int main() {
    solve();
    return 0;
}

Share on

reud
WRITTEN BY
reud
Stundent