1. Searching for Soulmates
ai를 bi로 바꾸기 위한 연산의 최소 횟수를 구하라.
연산에는 3가지 종류가 있다.
- ai←ai×2
- ai←ai/2 (when 2|ai)
- ai←ai+1
1≤N≤10,1≤ai,bi≤1018
<c++ />
#include <bits/stdc++.h>
#define REP(i,a,b) for (auto i = (a); i <= (b); ++i)
using namespace std; using ll = long long;
const int N = 11;
int n;
pair<ll,ll> p[N];
int make_to(ll a, ll b) {
if (a == 0) {
if (b == 0) return 0;
return __builtin_popcountll(b)+63-__builtin_clzll(b);
}
if (b < a) return 1e9;
int mv = __builtin_clzll(a)-__builtin_clzll(b);
ll ret = 1e9;
for (int k = 0; k <= mv; k++) {
if ((b>>k) >= a) {
ret = min(ret,
(b>>k)-a+k+__builtin_popcountll(b)-__builtin_popcountll((b>>k)<<k)
);
}
}
return ret;
}
int main() {
cin.tie(0)->sync_with_stdio(0);
cin >> n;
REP(i,1,n) cin >> p[i].first >> p[i].second;
REP(i,1,n) {
int answer = 1e9;
for (int carry = 0; p[i].first >= 1; carry++, p[i].first >>= 1) {
answer = min(answer,make_to(p[i].first,p[i].second)+carry);
if (p[i].first == 1) break;
if (p[i].first&1) p[i].first++, carry++;
}
cout << answer << '\n';
}
}
2. Cow Frisbee
프리스비를 주고받을 수 있는 쌍들에 대한 거리들의 총 합을 구하라.
hi<hj에 대해, max를 만족하면 프리스비를 주고받을 수 있다. 물론 |i-j|=1이여도 가능하다.
단, h는 1,2,\cdots,n의 순열이다.
거리는 j-i+1로 계산한다.
1\le N\le 3\cdot 10^5
<c++ />
#include <bits/stdc++.h>
using namespace std;
#define REP(i,a,b) for (auto i = (a); i <= (b); ++i)
using ll = long long;
const int N = 3e5+3;
int n;
int h[N];
int idx[N];
set<int> s;
int main() {
cin.tie(0)->sync_with_stdio(0);
cin >> n;
REP(i,1,n) {
cin >> h[i];
idx[i] = i;
s.insert(i);
}
sort(idx+1,idx+n+1,[](int x, int y){return h[x] < h[y];});
ll answer = 0;
REP(i,1,n-1) {
if (not (*s.begin() == idx[i])) {
answer += abs(*(--s.lower_bound(idx[i]))-idx[i])+1;
}
if (not (*(--s.end()) == idx[i])) {
answer += abs(*(++s.lower_bound(idx[i]))-idx[i])+1;
}
s.erase(idx[i]);
}
cout << answer;
}
3. Cereal 2
N마리의 각 i 소가 각각 제일 좋아하는 시리얼 f_i와 s_i가 있다. 각 소들은 줄을 서서 다음의 규칙을 시행한다.
- f_i가 남았으면 가져간다.
- f_i는 없는데, s_i가 있으면 s_i라도 가져간다.
- 둘 다 없으면 운다.
우는 소의 수의 최솟값과 우는 소의 수를 최소화 시키는 줄의 순서를 구하라.(여러개라면 그중 하나)
시리얼의 종류는 1,2,\cdots,M이 있다.
1\le N, M\le 10^5
'PS 문제들' 카테고리의 다른 글
[KOI 2018 본선] 조화로운 행렬 ★ (0) | 2022.05.21 |
---|---|
[JOISC 2019 Day 1] Examination(시험) ★ (0) | 2022.05.17 |
[KOI 2021 1차 중등부] 두 개의 팀 ★ (0) | 2022.05.16 |
USACO 2022 US Open Silver Contest ★ (0) | 2022.03.30 |
USACO 2019 January Contest - Silver ★ (0) | 2021.08.06 |