Coding (195) 썸네일형 리스트형 10868번 최솟값 세그먼트 트리 기본 문제. 2357번 문제를 풀었을때와 마찬가지로 'endl'을 사용해 출력하면 시간초과가 뜬다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 #include #include #include #include #define MAX 100001 using namespace std; int N, M; int arr[MAX]; vector answer; int mininit(int start, int end, int node, int* m.. 2357번 최솟값과 최댓값 세그먼트 트리 문제. 마지막 결과값을 보여주는 과정에서 "\n" 대신 endl을 사용하면 시간초과가 뜬다. (endl에는 새줄(개행)뿐만 아니라 출력 함수의 끝을 알림으로써 버퍼를 정리하는 기능이 있어 오래걸리는듯 싶다) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 #include #include #include #include #def.. 17609번 회문 팰린드롬 기본 문제. 회문이 아닐 경우 그 다음 문자를 비교하면 된다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950#include #include using namespace std; int T;vector answer; bool palindrome2(string str, int start, int end){ for(int i=start,j=end;i T; for(int i=0;i> str; int size = str.size(); answer.push_back(palindrome(str, 0, size-1)); } for(int i=0;i 17608번 막대기 간단한 문제 맨 오른쪽 값을 기준으로 왼쪽으로 가면서 최대값이 바뀔때마다 카운트해주면 된다. 1234567891011121314151617181920212223242526272829303132#include #define MAX 100000 using namespace std; int N;int height[MAX];int cnt; void solved() { int num = height[N - 1]; for (int i = N - 2; i >= 0; i--) { if (num height[i]; } solved(); return 0;}Colored by Color Scriptercs 12865번 평범한 배낭 DP 문제. 1 2 3 4 5 6 7 6,13 0 0 0 0 0 13 13 4,8 0 0 0 8 8 13 13 3,6 0 0 6 8 8 13 14 5,12 0 0 6 8 12 13 14 테이블을 그려서 직접 하나씩 넣어가면서 생각해보면 점화식이 쉽게 나온다. (1부터 7은 배낭에 들어갈 수 있는 용량을 의미하고 맨 왼쪽 열에 적혀있는 두 숫자들은 무게와 가치를 의미한다) i) k-무게[i]가 0과 같거나 크다면, dp[i][k]=max(dp[i-1][k],dp[i-1][k-무게[i]] + 가치[i]) ii) 0보다 작다면, dp[i][k]=dp[i-1][k] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3.. 10874번 이교수님의 시험 UCPC 2015년 첫 번째 문제. 1번 문제부터 10번 문제까지 정답을 미리 저장해두고 각 학생의 답과 비교하면 된다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445#include #include #define MAX 101 using namespace std; int N;int answer[11];vector vec[MAX]; bool solved(int i){ for(int j=0;j> N; for(int i=1;i 1766번 문제집 위상 정렬 기본 문제. 우선 순위 큐를 사용하여 위상 정렬을 구현하면 된다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include #include #include #define MAX 32001 using namespace std; int N,M;int inDegree[MAX];vector vec[MAX]; void topologySort(){ priority_queue q; for(int i=1;i> b; vec[a].push_back(b); inDegree[b]++; } topologySort();} Colored by Color Scriptercs 2252번 줄 세우기 위상 정렬 기본 문제. 각 정점에 해당하는 inDegree를 계산한 후 0(우선순위가 높은)부터 시작하여 갯수를 줄여나가면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 #include #include #include #define MAX 32001 using namespace std; int N,M; int inDegree[MAX]; vector vec[MAX]; void topologySort(){ queue q; for(int i=1;i> b; vec[a].push_back(b); inDegree[b.. 이전 1 2 3 4 5 6 ··· 25 다음