/ SeriousOJ /

Record Detail

Time Exceeded


  
# Status Time Cost Memory Cost
#1 Accepted 2ms 516.0 KiB
#2 Accepted 4ms 560.0 KiB
#3 Accepted 54ms 580.0 KiB
#4 Time Exceeded ≥2064ms ≥788.0 KiB
#5 Time Exceeded ≥2095ms ≥1.008 MiB

Code

#include <bits/stdc++.h>
using namespace std;

#define FAST ios_base::sync_with_stdio(false);cin.tie(NULL);
using ll = long long;
using P = pair<int,int>;

int main() {
  FAST;
  
  int tc = 1, ti;
  cin >> tc;

  for (ti = 1; ti <= tc; ++ti) {
    int n, k, i, j, d, dd, g;
    cin >> n >> k;

    vector<int> a(n);
    for (i = 0; i < n; ++i) cin >> a[i];

    map<int,vector<int>> mp;
    for (i = 0; i < n; ++i) mp[a[i]].push_back(i);

    priority_queue<P, vector<P>, greater<P>> pq;
    vector<int> dis(n, INT_MAX);
    pq.emplace(0, 0);
    
    for (int z : mp[a[0]]) dis[z] = 1;
    dis[0] = 0;

    while (!pq.empty()) {
      tie(d, i) = pq.top(); pq.pop();
      if (dis[i] != d) continue;

      for (j = i+1; j < n; ++j) {
        g = gcd(a[i], a[j]);
        dd = d + a[i]/g;
        if (dis[j] > dd) {
          dis[j] = dd;
          pq.emplace(dd, j);
        }
      }

      if (i < n-1) {
        dd = d+k;
        j = i+1;
        if (dis[j] > dd) {
          dis[j] = dd;
          pq.emplace(dd, j);
        }
      }
    }

    cout << dis[n-1] << "\n";
  }

  return 0;
}

Information

Submit By
Type
Submission
Problem
P1099 Which way to go
Contest
Brain Booster #6
Language
C++17 (G++ 13.2.0)
Submit At
2024-10-03 17:48:42
Judged At
2024-11-11 02:45:35
Judged By
Score
15
Total Time
≥2095ms
Peak Memory
≥1.008 MiB