-
Code605s Round # 605 (Div. 3)코드포스(CodeForce) 2020. 1. 16. 22:55반응형
https://codeforces.com/contest/1272/problem/A
세친구가 있는대 각각의 자리가 주어진다. 각 친구들은 현재 위치에서 +1, -1 이동하거나 안움직 일수 있는데 각 친구들의 거리의 차이중 가장 적은 거리를 구하는 문제로서 모든 경우의 수 조합을 만들어서 주어진 식 X = |A-B| + |A-C| + |B+C| 의 최소값을 구하면 된다. 문제의 제약시간 1초고 입력으로 들어오는 수 A, B, C 는 10^9 범위 안에 들기 때문에 BRUTE-FORCE 로 가능하다.
#include <iostream> #include <sstream> #include <string> #include <algorithm> #include <functional> #include <vector> #include <list> #include <queue> #include <deque> #include <map> #include <unordered_map> #include <set> #include <stack> #include <cstring> using namespace std; #define MAX_SIZE 100 #define INF 0x7fffffff #define CENDL "\n" #define ll long long int calc(int a, int b, int c) { return abs(a - b) + abs(a - c) + abs(b - c); } int main() { std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int count; cin >> count; while (count--) { int a, b, c; cin >> a >> b >> c; int sol = calc(a, b, c); for (int da = -1; da <= 1; da++) { for (int db = -1; db <= 1; db++) { for (int dc = -1; dc <= 1; dc++) { int na = a + da; int nb = b + db; int nc = c + dc; int cand = calc(na, nb, nc); sol = min(sol, cand); } } } cout << sol << CENDL; } return 0; }
https://codeforces.com/contest/1272/problem/B
로봇이 청소를하는데 메시지는 LRDU 로 들어온다 전제조건은 한번 지나간 위치는 다시 올수는 없으나 허용되는 위치는 0.0 시작점은 재진입을 할수 있다. 걍 풀었다 아아아아
#include <iostream> #include <sstream> #include <string> #include <algorithm> #include <functional> #include <vector> #include <list> #include <queue> #include <deque> #include <map> #include <unordered_map> #include <set> #include <stack> #include <cstring> using namespace std; #define MAX_SIZE 100 #define INF 0x7fffffff #define CENDL "\n" #define ll long long const string MOVES = "LRUD"; int main() { std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int q; cin >> q; for (int i = 0; i < q; ++i) { string s; cin >> s; map<char, int> cnt; for (auto c : MOVES) cnt[c] = 0; for (auto c : s) ++cnt[c]; int v = min(cnt['U'], cnt['D']); int h = min(cnt['L'], cnt['R']); if (min(v, h) == 0) { if (v == 0) { h = min(h, 1); cout << 2 * h << endl << string(h, 'L') + string(h, 'R') << endl; } else { v = min(v, 1); cout << 2 * v << endl << string(v, 'U') + string(v, 'D') << endl; } } else { string res; res += string(h, 'L'); res += string(v, 'U'); res += string(h, 'R'); res += string(v, 'D'); cout << res.size() << endl << res << endl; } } return 0; }
반응형'코드포스(CodeForce)' 카테고리의 다른 글
Codeforces Round #614 (Div. 2) - B. JOE is on TV! (0) 2020.01.20 Codeforces Round #614 (Div. 2) - A. ConneR and the A.R.C. Markland-N (0) 2020.01.20 Codeforces Round #613 (Div. 2) (0) 2020.01.16 Codeforces Round #512 (Div 2) - A. In Search of an Easy Problem (0) 2018.09.30 Codeforces Round #462 (Div. 2) - A. A Compatible Pair (0) 2018.08.17