首页 > 其他分享 >D. Fox And Jumping

D. Fox And Jumping

时间:2024-07-17 13:41:55浏览次数:12  
标签:gcd int ll Fox long Jumping

原题链接

题意简述

在序列中选择若干个数,使得其 \(gcd=1\) 且对应代价最小

实施

假设答案里,\(a_i\) 是最后一个选的,代表 \(i\) 前面存在某些数的组合的 \(gcd\) 与 \(a_i\) 互质

背包+状压

再遍历前面的数 \(j\) 和状态,代表选 \(j\) 时,数 \(i\) 的质因子集合的状态

code

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll N=114514;

ll dp[1024];
ll yz[305][14];
ll cnt[306]={0};

void solve()
{
    int n;
    cin>>n;

    vector<int> c(n+5);

    for(ll i=1;i<=n;i++)
    {
        ll x;
        cin>>x;

        for(ll j=2;j*j<=x;j++)
        {
            if(x%j==0)
            {
                yz[i][++cnt[i]]=j;
                while(x%j==0) x/=j;
            }
        }
        if(x>1) yz[i][++cnt[i]]=x;

    }

    for(int i=1;i<=n;i++) cin>>c[i];


    ll ans=2e9;
    for(int i=1;i<=n;i++)
    {
        memset(dp,0x3f,sizeof dp);
        int bit=(1<<cnt[i])-1;
        dp[bit]=c[i];


        for(int j=1;j<i;j++)
        {
            ll tem=0;
            for(int x=1;x<=cnt[i];x++)
            {
                bool flag=0;
                for(int y=1;y<=cnt[j];y++)
                {
                    if(yz[i][x]==yz[j][y])
                    {
                        flag=1;
                        break;
                    }
                }
                if(flag) tem|=(1<<(x-1));
            }
            for(int k=0;k<=bit;k++) dp[k&tem]=min(dp[k&tem],dp[k]+c[j]);
        }

        ans=min(ans,dp[0]);
    }

    if(ans==2e9) cout<<"-1\n";
    else cout<<ans<<'\n';

}
int main()
{
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int t=1;
    //cin>>t;
    while(t--) solve();
    return 0;
}


标签:gcd,int,ll,Fox,long,Jumping
From: https://www.cnblogs.com/pure4knowledge/p/18307133

相关文章

  • 将DBF文件(dBase, FoxPro等)中的数据转换到SQLite
    将DBF文件(dBase,FoxPro等)中的数据转换到SQLite,可遍历指定目录下所有的dbf文件。可参考以下程序,本程序参考了dbf-to-sqlite: #_*_coding:utf-8_*_'''@File:main.py@Time:2024/07/17@Author:LionGIS@Contact:[email protected]@Description:......
  • Fox And Names
    这题题意是根据被改变的字典序给出的字符串求出字典序。比较字典序大小就是看两个字符串第一个不同的字符或是在前面完全相同的情况下比较长度。所以当前面的条件都不满足时就是题目的impossible。这题主要就是找出相邻两个字符串中第一个不相等字符,由此我们就得出这两个字符串的......
  • Apifox报错404:网络错误,请检查网络,或者稍后再试的解决办法
    详细报错如图:解决办法:1、检查请求方法(get,post)是否正确,请求的URL是否正确,如果不正确,修改后重新发起请求;如果都正确,再参考22、复制curl用postman来请求第一步apifox复制出curl第二步postman导入curl第三步发起请求,如下图响应成功......
  • Apifox 6月更新|定时任务、内网自部署服务器运行接口定时导入、数据库 SSH 隧道连接
    Apifox新版本上线啦!!! 看看本次版本更新主要涵盖的重点内容,有没有你所关注的功能特性:自动化测试支持设置「定时任务」 支持内网自部署服务器运行「定时导入」数据库均支持通过SSH隧道连接自动化测试数据库操作优化 将Apifox更新至最新版,一起开启全新体验......
  • 【保姆级介绍下Foxmail 邮箱】
    ......
  • FireFox 编译指南2024 Windows10篇-环境准备(一)
    1.引言在开源浏览器项目中,Firefox因其高性能和灵活性而备受开发者青睐。为了在本地环境中编译和定制Firefox,开发者需要做好充分的环境准备工作。这不仅是编译成功的基础,也是后续调试、优化和二次开发的关键步骤。编译Firefox是一个复杂而耗时的过程,涉及大量的代码文件和依赖......
  • [题解]AT_abc153_f [ABC153F] Silver Fox vs Monster
    模拟赛最后\(15\)分钟想到的做法。思路首先有一个显然的贪心策略:我们放炸弹的地方要尽可能的使这个炸弹能影响到更多的怪上。那么我们可以将对于一个怪\(i\)能够影响到它的区间表示出来\([\max(1,l_i-d),a_i+r]\)。然后将这些区间排个序,可以粗略画出这样的图:根据上......
  • vue-devtools (firefox浏览器,火狐浏览器) Vue调试
    vue-devtools(firefox浏览器,火狐浏览器)vuedevtools  vue-devtools(firefox浏览器) 打开firefox浏览器,使用快捷键【Ctrl+Shift+A】打开组件管理列表,并搜索vue  安装   重启Firefox 访问一个Vue应用,打开开发者工具 ......
  • Apifox详细使用教程
    一、Apifox简介Apifox是一款集成了API设计、开发、测试等多功能于一体的工具,它提供了API文档管理、API调试、APIMock、API自动化测试等功能。以下是一些关于Apifox使用的基本步骤和教程:我们在日常编程开发过程中经常实行的是前后端分离架构的模式,一个项目的落地会通过产品、......
  • 解决页面刷新后firefox浏览器中iframe内容不更新的问题
    最近遇到了一个问题:使用firefox浏览切换2层iframe下的某个页面后iframe内容未更新,Chrome和Edge浏览器并无这个问题。在这个项目中,最外层的iframe用于隐藏url,里层的iframe用于给不同参数的url提供一个统一地址以便于权限路由等控制。 由于项目比较复杂,用简单的代码很难去复现这个......