본문 바로가기

전체 글110

BOJ 11690 LCM(1, 2, ... , n) 문제 링크자연수 n이 주어졌을 때, 1부터 n까지 모든 자연수의 최소공배수를 구하는 문제입니다.LCM(1, 2, ... , n) = LCM(1, LCM(2, ... , n)) = LCM(1, LCM(2, LCM(3, ... , n)))입니다.n 이하인 소수를 라 하고 그러한 소수가 총 m개라면, 답은 가 됩니다.n 이하인 소수를 모두 찾아야할텐데 당장 떠오르는 방법은 에라토스테네스의 체 입니다. 시간복잡도가 O(n lg lg n)이라 걱정은 되지만, 시간제한이 2초라서 아래와 같이 작성하였고 1556MS에 통과하였습니다.#include #include #include using namespace std;const long long mod = 4294967296;int n, p[6000005], pn;ch.. 2015. 12. 4.
Codeforces Round #323 Contest Problems(Div.1) / Contest Problems(Div .2)Div.2A-Asphalting Roads가로로 n개, 세로로 n개의 도로가 있고, 교차로가 n*n개 있다. 가로와 세로 각각 1번부터 n번까지 번호가 붙여질 때, n*n개의 교차로가 주어졌을 때 그 교차로에서 만나는 가로 도로와 세로 도로 둘 다에 이미 아스팔트가 칠해지지 않았다면 아스팔트를 둘 다에 칠한다. 아스팔트를 칠하게 되는 교차로들을 출력하는 문제이다.그냥 간단하게 체크해주면서 하라는대로 출력하면 된다.#include int n, r[55], c[55]; int main() { scanf("%d", &n); for (int i = 1; i 2015. 10. 5.
Codeforces Round #322 (Div. 2) Contest Problems / Contest ResultA. Vasya the Hipster빨간 양말의 개수 a와 파란 양말의 개수 b가 주어졌을 때, 서로 다른 색으로 짝을 지을 수 있는 최대 양말 쌍의 개수와 그렇게 쌍을 지은 양말을 제외하고, 한 가지 양말 색깔만으로 만들 수 있는 양말 쌍의 개수를 출력하는 문제이다.전자는 min(a, b)이고 후자는 (max(a, b)-min(a,b))/2이다.#include #include using namespace std; int main() { int a, b; scanf("%d%d", &a, &b); int c = a; if (c > b) c = b; printf("%d ", c); a -= c; b -= c; printf("%d", max(a / 2.. 2015. 9. 28.
Aho-Corasick Algorithm Aho-Corasick Algorithm을 방법 위주로 설명하는 ppt를 만들어보았다.Aho-Corasick Algorithm PPT Slide Link 2015. 9. 27.
Codeforces Round #321 (Div. 2) Contest Problems / Contest Standing A. Kefa and First Stepsn개의 숫자가 주어졌을 때, maximum non-decreasing subsegment를 찾는 게 문제이다.어떤 수열의 subsegment는 연속한 부분수열을 의미한다. 차례대로 수열의 원소들을 보면서, 새 원소가 이전의 원소보다 더 크다면 이전 원소의 maximum non-decreasing subsegment에 1을 더하여 답에 갱신하고, 아니면 현재의 maximum non-decreasing subsegment을 길이 1로 만들어 계속 진행해 나가는 방법으로 풀린다. O(n)에 풀 수 있다.#include int n, res, cnt, a[100005], bf; int main() { scan.. 2015. 9. 27.