POJ 1455 Crazy tea party
問題
http://poj.org/problem?id=1455
n人が車座になって座っている。一回の席交換で隣り合う二人が入れ替わる。はじめとは逆順に座るためには席交換を最小で何回行えばいいか。
やりかた
n人を半分こしてそれらごとにひっくり返せばいい。
1234|5678 → 4321|8765
こんな感じ。ひっくり返し方はグループにm人いればm * (m - 1) / 2。
以下ソース。
int main(){ int t; cin >> t; while(t--){ int n; cin >> n; cout << (n / 2) * (n / 2 - 1) / 2 + (n - n / 2) * (n - n / 2 - 1) / 2 << endl; } return 0; }
何回か実験したら思い浮かんだ。
TCO R3Aでpractice roomから閉めだされてしまったのでPOJで時間つぶし。
Get up! 明日のSUPER ST@R!