AtCoder Beginner Contest 117

はい。
https://atcoder.jp/contests/abc117

A - Entrance Examination

問題文読んでサンプルのとおりに計算する。

B - Polygon

一番長い辺とその他全ての辺の長さをどうにか計算して判定。

C - Streamline

とりあえずソートする。それぞれ隣との区間を求める。区間もソートする。使えるコマが一つ増えるごとに大きい区間を省略できる。大きい区間を省略した後の総和が解になる。

D - XXOR

Pythonは嘘解法してます。
Kを2進数にして1が立っている桁を調べておく。Aの数を全部1が立っている桁を調べて個数をカウントする。桁が大きい方から見る。
XをK以下にするためにはKより先に1は立てられない。Kだけで1が立つ桁が発生したら後は自由。Kの以降の桁が全て0、Xの以降の桁が全て1でもXは必ずKより小さくなる。
Xで1を立てたいのはAで数えた中で1が立ってる個数がn/2より少ないもの。個数がn/2ぴったりのときは立てても立てなくてもXORで出てくる数は変わらないのですけど、XをK以下にする条件に不利になるので立てない方針でいいと思います。
C++は真面目に桁DPしてます。
DPテーブルをどう用意するかに悩んで時間がかかり解説記事などをググって解決しました。
上記ではdp[i][0]はKと同じビットの立て方でXORがいくつになるかを見ています。dp[i][1]はKより小さい数でいくつになるかを見ています。Kより小さい数であるということは、一つ手前の桁までは同じでも大丈夫ですが、dp[i][0]では立っているがdp[i][1]では立っていないという一度発生すれば必ず小さいです。一度小さくなったら解の桁ではどんなビットの立て方をしてもK以上になることはありません。なんとかDP配列をよしなに更新すると解が求まるはずです。