首页 > 其他分享 >D. Learning to Paint

D. Learning to Paint

时间:2024-07-19 19:30:16浏览次数:12  
标签:cnt int back Paint Learning push dp

原题链接

题解

dp+多次优先队列

设 \(dp[i]\) 为 \([1,i]\) 区间内,前 \(k\) 个最大值(有可能不足k个)(注意 \(dp[i]\) 是一个序列)

则 \(dp[i]=\{dp[j][t]+a[j+2][i],j\in[0,i-2],t\in[0,top_j]\} ,\sum t=k\)

code

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

int a[1005][1005];

struct Compare {
    bool operator()(const array<int, 4>& a, const array<int, 4>& b) {
        return a[3] < b[3];
    }
};

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

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


    vector<vector<int>> dp(n + 5);
    dp[0].push_back(0);

    for (int i = 1; i <= n; i++)
    {
        priority_queue<array<int, 4>, vector<array<int, 4>>, Compare> q;

        q.push({i+1, i - 1, 0, dp[i - 1][0]});

        for (int j = i; j >= 1; j--)  q.push({j, max(0,j - 2), 0, a[j][i] + dp[max(0,j-2)][0]});


        while (!q.empty() && dp[i].size() < k)
        {
            auto [l, it, cnt, val] = q.top();
            q.pop();

            dp[i].push_back(val);
            if (cnt +1< dp[it].size()) q.push({l, it, cnt + 1, dp[it][cnt+1] + a[l][i]});
        }
    }


    for(auto it:dp[n]) cout<<it<<' ';cout<<'\n';
}

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

标签:cnt,int,back,Paint,Learning,push,dp
From: https://www.cnblogs.com/pure4knowledge/p/18312252

相关文章

  • FedNAS: Federated Deep Learning via Neural Architecture Search-_BaseLine-FedNAS
    背景与挑战:介绍FL,引出数据异构问题和数据不可见性,因此需要大量的人力来定制更好的模型架构,因为设备异构性,边缘设备需要更高的计算负担和通信成本。介绍解决数据异构的相关工作,指出这些工作需要强大的先验假设。预定义的模型不一定是最优的贡献:1.提出FedNAS方法,在边缘设备之间......
  • FINCH: Enhancing Federated Learning With Hierarchical Neural Architecture Search
    背景与挑战:介绍FL联邦学习,指出两个联邦学习的缺点::::danger1.预定义的架构容易使模型训练陷入局部次优解,导致训练性能低下2.开发一个足够精确和小的模型来部署在客户端是很复杂的,这需要在迭代的试错过程中付出大量的人力:::(手动设计更高效的体系结构在很大程度上依赖于人类......
  • Peaches: Personalized Federated Learning with Neural Architecture Search in Edge
    背景:介绍联邦学习,参数服务器和workers之间的关系挑战:1.预定义模型:太大的架构可能会导致过度拟合问题和workers不必要的计算开销,而太小的架构可能会导致低训练性能2.数据不可访问:数据不可访问导致不能设计出真正高效的架构在边缘计算中使用FL。需要考虑三种挑战:1.异构数据2......
  • Arena Learning: 构建大语言模型的数据飞轮
    大语言模型(LLMs)正在快速发展,但如何有效评估和持续改进这些模型仍面临巨大挑战。本文提出了一种名为ArenaLearning的创新方法,通过模拟聊天机器人竞技场来构建高效的数据飞轮,从而实现LLMs的持续优化。让我们深入了解这种方法的核心思想和关键技术。1.背景与挑战近年......
  • Self-Supervised Learning for Point Clouds Data: A Survey
    摘要综述了自监督学习(SSL)在3D点云数据处理领域的最新进展,对现有SSL方法进行了细致的分类和评估,并在多个基准数据集上对代表性方法进行了性能比较。同时指出了现有研究的局限性,提出了未来研究的方向。Introduction文章主要是针对自监督学习的(SSL),详细阐述了3D点云数据由于其......
  • Self-supervised Learning for Pre-Training 3D Point Clouds: A Survey
    Abstract点云数据由于其紧凑的形式和表示复杂3D结构的灵活性而被广泛研究。点云数据准确捕获和表示复杂3D几何形状的能力使其成为广泛应用的理想选择,包括计算机视觉,机器人技术和自动驾驶,所有这些都需要了解底层空间结构。这种方法旨在从未标记的数据中学习通用和有用的点云表......
  • QT利用QPainter实现自定义圆弧进度条组件
               在可视化应用中,弧形进度条应用也比较广泛,本文示例封装了一个可复用、个性化的弧形进度条组件。本文示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。主要结构就是外围一圈圆角进度,中间加上标题和对应进度的百分比,进度条的起始角......
  • 机器学习:详解迁移学习(Transfer learning)
    详解迁移学习深度学习中,最强大的理念之一就是,有的时候神经网络可以从一个任务中习得知识,并将这些知识应用到另一个独立的任务中。所以例如,也许已经训练好一个神经网络,能够识别像猫这样的对象,然后使用那些知识,或者部分习得的知识去帮助您更好地阅读x射线扫描图,这就是所谓的迁移学......
  • 机器学习 -> Machine Learning (III)
    1对抗学习对抗学习的目的是增加鲁棒性。对抗生成网络(GAN)包括生成器(Generator)和判别器(Discriminator)。如果目标是创建能够生成新内容的系统,那么生成器是希望得到并优化的模型,这是一个零和问题。1.1GenBGenB是对抗网络用于VQA的产物,如图添加了偏置模型和目标模型。训练......
  • Regularized Stochastic Learning and Online Optimization
    目录概符号说明MotivationFOBOS(Forward-BackwardSplitting)RDA(RegularizedDualAveraging)FTRL-Proximal(FollowTheRegularizedLeader)FOBOS,RDA,FTRL-Proximal的统一表示[1]DuchiJ.andSingerY.EfficientLearningusingForward-BackwardSplitting.NeurIP......