510D - Fox And Jumping - CodeForces Solution


bitmasks brute force dp math *1900

Please click on ads to support us..

C++ Code:

#define fst std::ios::sync_with_stdio(false), std::cin.tie(0), std::cout << std::fixed << std::setprecision(20)
#define le "\n"
#define ll long long 
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+50;
const int mod=998244353;
map<ll,ll> mp;

ll gcd(ll n,ll m){
    return m? gcd(m,n%m): n;
}

int main() {
    int n; cin>>n;
    vector<ll> a(n+1),w(n+1);
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++) cin>>w[i];

    for(int i=1;i<=n;i++){
        mp[a[i]] = mp[a[i]] ? min(mp[a[i]],w[i]) : w[i]; 
        for(auto j: mp){
            mp[gcd(j.first,a[i])] = mp[gcd(j.first,a[i])] ? min(mp[gcd(j.first,a[i])],j.second+w[i]) : j.second+w[i];
        }
    }
    cout<<(mp[1] ? mp[1]:-1)<<le;
    return 0;
}


Comments

Submit
0 Comments
More Questions

977A - Wrong Subtraction
263A - Beautiful Matrix
180C - Letter
151A - Soft Drinking
1352A - Sum of Round Numbers
281A - Word Capitalization
1646A - Square Counting
266A - Stones on the Table
61A - Ultra-Fast Mathematician
148A - Insomnia cure
1650A - Deletions of Two Adjacent Letters
1512A - Spy Detected
282A - Bit++
69A - Young Physicist
1651A - Playoff
734A - Anton and Danik
1300B - Assigning to Classes
1647A - Madoka and Math Dad
710A - King Moves
1131A - Sea Battle
118A - String Task
236A - Boy or Girl
271A - Beautiful Year
520B - Two Buttons
231A - Team
479C - Exams
1030A - In Search of an Easy Problem
158A - Next Round
71A - Way Too Long Words
160A - Twins