SERIES · AtCoder Weekday Contest

Atcoder Weekday Contest 058

Atcoder Weekday Contest 058 풀이

6/26/2026 · 3 min read


A - Mountain Climbing Training

A - Mountain Climbing Training

정렬... 정렬을 하자 내림차순으로 정렬한 다음에 시뮬레이션으로 처리해주면 된다.

ll n,p,t,c,res;
 
auto solve = [](){
    ri(n, p, t, c);
    vl v(n); ri(v);
    sort(rall(v));
    for(int i = 0; i < n; i++){
        if(p >= t) break;
        p = v[i];
        res += c;
    }
    po(p >= t ? res : -1);
};
Time

B - Apple Harvest

implementation

KK보다 크거나 같은 것들만 남긴 다음에 처리해준 다음에 IMOS법을 이용하면 쉽다.

IMOS법을 이용해서 처리한 다음에 [i,i+m][i, i + m]구간에서 최대값을 찾아주면 된다.

ll n,m,k,res;
ll v[1 << 20];
 
auto solve = [](){
    ri(n, m, k);
    for(int i = 1; i <= n; i++){
        ri(v[i]);
        v[i] = (v[i] >= k ? v[i] : 0);
    }
    for(int i = 1; i <= n; i++) v[i] += v[i - 1];
    ll mx = 0;
    for(int i = 1; i + m - 1 <= n; i++){
        int l = i, r = i + m - 1;
        mx = max(mx, v[r] - v[l - 1]);
        //debug(l, r);
    }
    po(mx);
};
Time

C - Snow Depth Survey

prefix_sumimos

B번과 비슷하게 IMOS법을 이용한 다음에 KK이상인 것만 카운팅해주면 된다.

ll n,m,k,res;
ll v[1 << 20];
 
auto solve = [](){
    ri(n, m, k);
    while (m--){
        ll a,b; ri(a, b);
        v[a]++, v[b + 1]--;
    }
    for(int i = 1; i <= n + 1; i++) v[i] += v[i - 1];
    for(int i = 1; i <= n; i++) res += (v[i] >= k);
    po(res); 
};
Time

D - Shortest Time for Delivery Route

dijkstra

다익스트라를 2번 돌리면 된다.

ll n,m,k;
vector<pll> g[1 << 18];
 
vector<ll> dijkstra(ll st){
    vector<ll> dist(n + 1, iinf);
    minpq<pll> pq;
    pq.push({dist[st] = 0, st});
    while(si(pq)){
        auto [cdist, cur] = pq.top(); pq.pop();
        if(dist[cur] < cdist) continue;
        for(const auto& [cost, nxt] : g[cur]){
            if(dist[nxt] > cdist + cost){
                pq.push({dist[nxt] = cdist + cost, nxt});
            }
        }
    }
    return dist;
}
 
auto solve = [](){
    ri(n, m, k);
    while(m--){
        ll a,b,c; ri(a, b, c);
        g[a].pb({c, b}); g[b].pb({c, a});
    }
    auto dist1 = dijkstra(1);
    auto dist2 = dijkstra(k);
    if(dist1[k] == iinf or dist2[n] == iinf) po(-1);
    else po(dist1[k] + dist2[n]);
};
Time

E - Period of Stable Temperature

-업솔빙 예정-

총평

TODO

Tags:Atcoder
SERIES7 / 15회차

AtCoder Weekday Contest

  1. 5.Atcoder Weekday Contest 050
  2. 6.Atcoder Weekday Contest 056
  3. 7.Atcoder Weekday Contest 058지금 읽는 중
  4. 8.Atcoder Weekday Contest 067
  5. 9.Atcoder Weekday Contest 070

관련 글