[BOJ/20666] 인물이와 μ •μˆ˜, c++

2021. 8. 20. 00:47Β·DEV/PS

πŸ”— 링크

https://www.acmicpc.net/problem/20666

 

20666번: 인물이와 μ •μˆ˜

예제 2의 경우 4번 μ•„μ΄ν…œ 없이 2번 λͺ¬μŠ€ν„°λ₯Ό 작으면 3만큼 λ‚œμ΄λ„κ°€ μ˜¬λΌκ°„λ‹€. μ΄λ•Œ 1, 2, 5번째 λͺ¬μŠ€ν„°λ₯Ό 작으면 각각 λ‚œμ΄λ„κ°€ 2, 4, 3 이닀. λ”°λΌμ„œ μ΄λ•Œ κ²Œμž„μ˜ λ‚œμ΄λ„λŠ” 4 이닀. 이것이 ν΄λ¦¬μ–΄ν•˜

www.acmicpc.net

🀯 ν•œμ€„ ν›„κΈ°

visit μ‚¬λž‘ν•΄

🀷 문제

πŸ‘©‍πŸ’» 풀이

visit νŒλ³„λ¬Έ ν•œμ€„μ΄ λ‚  νž˜λ“€κ²Œ ν–ˆλ˜ 문제

μ—­μ‹œ shake! 2020 B번 λ¬Έμ œμ΄λ‹€.

μš°μ„ μˆœμœ„ 큐λ₯Ό μ“°λ©΄ νŽΈν•œ 문제!

 

μ²˜μŒμ— item 관계λ₯Ό κ·Έλž˜ν”„ 처럼 μƒκ°ν•΄μ„œ μ—°κ²°ν•˜μ—¬ ν’€λ €κ³  ν•˜κΈ΄ ν–ˆλŠ”λ° λ‚œμ΄λ„κ°€ λ†’μ•„μ§€λ©΄ νμ—μ„œ μ–΄λ–»κ²Œ ν•΄μ•Όν•  μ§€ λͺ¨λ₯΄κ² μ–΄μ„œ μ²˜μŒλΆ€ν„° λ‹€μ‹œ μƒκ°ν–ˆλ‹€. 그러던 쀑 μ•„μ˜ˆ μ²˜μŒλΆ€ν„° λ‚œμ΄λ„λ₯Ό μ˜¬λ €μ„œ μ‹œμž‘ν•˜λŠ”κ²Œ 쒋을 것 κ°™λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€.

μ²˜μŒμ—λŠ” 무쑰건 item 없이 μ‹œμž‘ν• ν…Œλ‹ˆ tip으둜 λ“€μ–΄μ˜¨ λͺ¬μŠ€ν„°λŠ” λ‚œμ΄λ„λ₯Ό 미리 μ˜¬λ €μ„œ 큐에 λ„£μ–΄μ£Όμ—ˆλ‹€.

νλŠ” { λ‚œμ΄λ„, 인덱슀 } ν˜•μ‹μœΌλ‘œ λ“€μ–΄κ°€κ³ , λ‚œμ΄λ„λ₯Ό κΈ°μ€€μœΌλ‘œ min heap을 λ§Œλ“€μ–΄μ€¬λ‹€.

 

이제 λ‚œμ΄λ„κ°€ μž‘μ€ λͺ¬μŠ€ν„°λΆ€ν„° topμ—μ„œ λ‚˜μ˜¬ν…λ° ν•΄λ‹Ή λͺ¬μŠ€ν„°λ₯Ό 작고 λ°”λ‘œ 이 λͺ¬μŠ€ν„°λ₯Ό 작으면 λ‚œμ΄λ„ κ°μ†Œ 효과λ₯Ό λˆ„λ¦΄ 수 μžˆλŠ” λͺ¬μŠ€ν„°λ“€μ„ λͺ¨λ‘ μ°Ύμ•„μ„œ ν•˜ν–₯μ‹œμΌœμ€€λ‹€.

ν•˜ν–₯ μ‹œν‚€κ³  λ‚˜μ„œ λ‹€μ‹œ 큐에 λ„£μ–΄μ€€λ‹€. μ–΄μ°¨ν”Ό μ•ˆμ— μžˆλŠ” 같은 λͺ¬μŠ€ν„°λ₯Ό κ°±μ‹ μ‹œν‚€μ§€ μ•Šμ•„λ„ λ˜λŠ” μ΄μœ λŠ” min heap 이고, λ‚œμ΄λ„κ°€ λ‚΄λ €κ°”κΈ° λ•Œλ¬Έμ— κ°±μ‹ ν•  ν•„μš” 없이 후에 λ“€μ–΄κ°„ λͺ¬μŠ€ν„°κ°€ 더 top에 κ°€κΉŒμšΈ 것이닀.

 

이 κ³Όμ •μ—μ„œ visit λ°°μ—΄μ˜ 역할이 μ€‘μš”ν•˜λ‹€.

μ²˜μŒμ— queueμ—μ„œ λ‚˜μ˜€λŠ” λͺ¬μŠ€ν„°λ§Œ visit νŒλ³„μ„ ν•΄μ€¬λ”λ‹ˆ κ³„μ†ν•΄μ„œ TLEκ°€ λ°œμƒν–ˆλ‹€.

곰곰히 μƒκ°ν•΄λ³΄λ‹ˆ 이미 죽은 λͺ¬μŠ€ν„°λŠ” λ‚˜μ€‘μ— μ–΄λ–€ μ•„μ΄ν…œμ΄ 생겼닀고 ν•΄μ„œ λ‚œμ΄λ„λ₯Ό ν•˜ν–₯μ‹œμΌœμ€„ ν•„μš”κ°€ μ—†λ‹€.

이게 key point κ°™λ‹€. λ”°λΌμ„œ for λ¬Έμ—μ„œ 이미 죽은 λͺ¬μŠ€ν„°λŠ” λ‚œμ΄λ„ μ—°μ‚° 없이 continue ν•˜λ„λ‘ μˆ˜μ •ν•˜μ˜€λ”λ‹ˆ ACλ₯Ό 받을 수 μžˆμ—ˆλ‹€.

 

μ£Όμ˜ν•  점은 λ”± 보닀 싢이 λ‚œμ΄λ„κ°€ ꡉμž₯히 큰 숫자둜 λ“€μ–΄μ˜¨λ‹€. 

+, - 연산이 μžˆμœΌλ‹ˆ μžλ£Œν˜•μ„ long long으둜 ν•΄μ£Όμž.

πŸ’» μ½”λ“œ

//TLE
//BOJ 20666 인물이와 μ •μˆ˜
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <string>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pii;
priority_queue<pii, vector<pii>, greater<pii>> q;
ll add[101010];
int visit[101010];
vector<pii> item[101010];
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int N, M;
    ll maxC = 0;
    cin >> N >> M;
    for(int i=1; i<=N; i++) {
        cin >> add[i];
    }
    int p;
    cin >> p;
    for(int i=0; i<p; i++) {
        int a, b, c;
        cin >> a >> b >> c;
        add[b] += c;
        item[a].push_back({b, c});
    }
    for(int i=1; i<=N; i++) {
        q.push({add[i], i});
    }
    int cnt = 0;
    while(cnt < M) {
        pii monster = q.top();
        q.pop();
        if(visit[monster.second])   continue;
        visit[monster.second] = 1;
        for (pii temp : item[monster.second]) {
            if(visit[temp.first])   continue;
            add[temp.first] -= temp.second;
            q.push({add[temp.first], temp.first});
        }
        if(maxC < monster.first)   maxC = monster.first;
        cnt += 1;
    }
    cout << maxC;
    return 0;
}
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'DEV > PS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[BOJ/14746] Closest Pair, c++  (0) 2021.09.20
[BOJ/20218] Parity Constraint Shortest Path, c++  (1) 2021.08.28
[BOJ/20665] λ…μ„œμ‹€ 거리두기, c++  (2) 2021.08.20
[BOJ/11280] 2-SAT - 3, c++  (2) 2021.08.19
[BOJ/17222] μœ„μŠ€ν‚€ 거래, c++  (2) 2021.08.12
'DEV/PS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [BOJ/14746] Closest Pair, c++
  • [BOJ/20218] Parity Constraint Shortest Path, c++
  • [BOJ/20665] λ…μ„œμ‹€ 거리두기, c++
  • [BOJ/11280] 2-SAT - 3, c++
jobchae
jobchae
λ§ν•˜λŠ” κ°μžμ§€λ§Œ, μ½”λ“œλ₯Ό λ„μ μ΄λŠ” Node.js λ°±μ—”λ“œ κ°œλ°œμžμž…λ‹ˆλ‹€.
  • jobchae
    JOBCHAE
    jobchae
  • 전체
    였늘
    μ–΄μ œ
    • πŸš€ JOBCHAE (177)
      • DEV (146)
        • PS (108)
        • Node.js (12)
        • React (3)
        • docker (1)
        • μž‘λ‹€ν•œ 개발 일지 (20)
        • injection (1)
        • CI CD (0)
        • JS, TS (1)
      • 좕ꡬ (0)
      • 일상 (19)
      • μ˜ν™” (3)
      • μŒμ•… (8)
  • λΈ”λ‘œκ·Έ 메뉴

    • πŸ’» Github
    • πŸ™‹πŸ» Linkedin
    • πŸ“– λ°©λͺ…둝
  • 링크

    • PS Github
  • 곡지사항

  • 인기 κΈ€

  • νƒœκ·Έ

    λ°±μ€€
    DFS
    nodejs
    일상
    μœ„μƒμ •λ ¬
    Express
    λ ›μΈ λ½νŽ˜μŠ€ν‹°λ²Œ
    typescript
    μš°μ„ μˆœμœ„ν
    BFS
    slack
    이뢄탐색
    PS
    aws
    SOPT
    node.js
    GitHub
    λ¦¬μ•‘νŠΈ
    mongoDB
    μ•Œκ³ λ¦¬μ¦˜
    μ•±μžΌ
    μŠ¬λž™λ΄‡
    boj
    react
    μŠ¬λž™
    Nest
    Nest.js
    DP
    회고
    μ†νŠΈ
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
jobchae
[BOJ/20666] 인물이와 μ •μˆ˜, c++
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”