본문 바로가기

728x90
반응형

Algorithm

(120)
[C++] 11286 : 절댓값 힙 https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net #include #include using namespace std; int N; int main(void){ int x; priority_queue pq; //positive priority queue priority_queue nq; //negative priority queue cin>>N; for(int i=0;i>x; if(x>0) pq.push(-x); //오름차순..
[C++] 14889 : 스타트와 링크 https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net #include #include using namespace std; int N; //인원수 int s[22][22]; //스탯 저장 테이블 bool v[22]; //true인 팀과 false인 팀 두부류 int ans=INT_MAX; //정답 void f(int team, int depth){ //team : 한쪽팀 인원 수, depth : 깊이 if(depth>N) return; //깊이 넘으면 종료 if(team..
[C++] 1062 : 가르침 https://www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net #include using namespace std; int N, K; string s; int a[55]; int ans; int bitpop(int v) { //2bit에서 1 개수 세주기 int cnt = 0; while (v) { cnt += (v & 1); v >>= 1; } return cnt; } int main(void) { int x; cin >> N >> K; for (i..
[C++] 1780 : 종이의 개수 https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수 www.acmicpc.net #include using namespace std; int N; int MAP[2200][2200]; int ans[3]; void f(int x, int y, int n) { if (n < 1) return; int chk = 0; for (int i = x; i < x + n; i++) for (int j = y; j < y + n; j++) if (MAP[x][y] != MAP[..
[C++] 1007 : 벡터 매칭 https://www.acmicpc.net/problem/1007 1007번: 벡터 매칭 평면 상에 N개의 점이 찍혀있고, 그 점을 집합 P라고 하자. 집합 P의 벡터 매칭은 벡터의 집합인데, 모든 벡터는 집합 P의 한 점에서 시작해서, 또 다른 점에서 끝나는 벡터의 집합이다. 또, P에 속 www.acmicpc.net #include #include #include #include #include using namespace std; int T, N; vector p; double ans; bool visit[22]; void f(int cnt,int depth) { if (depth >= N) return; //leaf로 가면 종료 if (cnt >= N / 2) { //N/2개만 +하면 되니깐(나머..
[C++] 1260 : DFS와 BFS https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net #include #include #include #include using namespace std; int N, M, V; vector v[1111]; bool d[1111]; //dfs의 방문 표시 bool b[1111]; //bfs의 방문 표시 void dfs(int n) { if (d[n]) return; //방문한 곳이면 넘어가기 cout M >> V..
[C++] 1417 : 국회의원 선거 https://www.acmicpc.net/problem/1417 1417번: 국회의원 선거 첫째 줄에 후보의 수 N이 주어진다. 둘째 줄부터 차례대로 기호 1번을 찍으려고 하는 사람의 수, 기호 2번을 찍으려고 하는 수, 이렇게 총 N개의 줄에 걸쳐 입력이 들어온다. N은 50보다 작거나 같 www.acmicpc.net #include #include #include using namespace std; int N; int dasom; //다솜이 가지고 있는 투표수 priority_queue q; //우선순위 큐 int ans; //출력할 정답 int main(void) { int v,i; cin >> N; cin >> dasom; for (i = 1; i > v; q.p..
[C++] 1927 : 최소 힙 https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net #include #include using namespace std; int N; int x; priority_queue q; //우선순위 큐 int main(void) { //입출력 시간단축(안하면 시간초과) ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N; for (int i = 0; i < N; i..

728x90
반응형