본문 바로가기

알고리즘25

Codeforces Round #699 (Div. 2) ABC import sys; input = sys.stdin.readline for TEST in range(int(input())): N, M = map(int, input().split()) res = True cnt = [0 for i in range(4)] for c in input().rstrip(): if c=="R": cnt[0] += 1 if c=="U": cnt[1] += 1 if c=="L": cnt[2] += 1 if c=="D": cnt[3] += 1 if N>=0: if N > cnt[0]: res = False else: if -N > cnt[2]: res = False if M>=0: if M > cnt[1]: res = False else: if -M > cnt[3]: res = F.. 2021. 2. 7.
연속한 수의 XOR sum ll xorSum(ll n) { int m = n % 4; if (m == 0) return n; if (m == 1) return 1; if (m == 2) return n + 1; return 0; } 1부터 n까지의 수의 XOR sum은 위와 같다. 자세한 내용은 여기에서 볼 수 있다. ll xorSum(ll l, ll r) { return xorSum(l - 1) ^ xorSum(r); } 구간 [L : R] 의 xor 합 역시 같은 두 수를 xor 하면 0이 된다는 사실을 이용하여 구할 수 있다. 2020. 12. 25.
Codeforces Round #688 (Div. 2) ABCD import sys input = sys.stdin.readline for TEST in range(int(input())): n, m = map(int, input().split()) r = [*map(int, input().split())] c = [*map(int, input().split())] s = set(x for x in r) res = 0 for i in c: if i in s: res += 1 print(res) A - Cancel the Trains 인접한 지점끼리 거리가 모두 같으므로 중복되는 값의 수가 답이다. import sys input = sys.stdin.readline for TEST in range(int(input())): n = int(input()) s = [*ma.. 2020. 12. 5.
Educational Codeforces Round 99 (Rated for Div. 2) ABCD import sys input = sys.stdin.readline for TEST in range(int(input())): print(len(input().rstrip())) A - Strange Functions A번에 이렇게 큰 수를 다루는 문제가 나올 리 없기 때문에 당당하게 길이를 출력하였다. #include using namespace std; typedef long long ll; ll dp[2000001]; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); set s; for (int i = 1; i TEST; while (TEST--) { int n; cin >> n; cout TEST; while (TEST--) { int.. 2020. 12. 1.
치킨 쿠폰 문제: 처음에 교환 쿠폰 n장이 있고, k장을 사용하면 1장의 쿠폰을 줄 때, 최대 몇 마리의 치킨을 받을 수 있는가? 사용한 총 쿠폰 수를 t라고 하자. 처음 n장이 있으니 t의 초기값은 n이다. 새로 받을 수 있는 쿠폰은 n // k 장이다. t += n // k * 가지고 있는 쿠폰으로 최대한 많이 교환 이때 남는 쿠폰은 n // k + n % k 장이다. n = n % k + n // k * 교환하지 못한 n % k 장 + 이제 새로 받은 n // k 장 이것을 새로 받을 수 있는 쿠폰이 0장이 될 때까지 반복하면 된다. t = n while n//k > 0: t += n//k n = n//k + n%k 이제 t를 한번에 구하자. k개의 쿠폰을 사용하면 1개의 쿠폰을 받으므로, k - 1개의 쿠폰.. 2020. 11. 25.
Codeforces Round #686 (Div. 3) ABCD import sys input = sys.stdin.readline for TEST in range(int(input())): n = int(input()) for i in range(n-1): print(i+2, end=" ") print(1) A - Special Permutation 한 칸씩 옆으로 밀면 Ai != i가 성립한다. import sys input = sys.stdin.readline for TEST in range(int(input())): n = int(input()) d = {} # appearance, ind s = [*map(int, input().split())] for i, c in enumerate(s): try: d[c] = [d[c][0]+1, d[c][1]] exce.. 2020. 11. 25.