当前位置: 首页 > news >正文

???ABC366:F - Maximum Composition(dp,无序:贪心排序)

问题陈述

给你 NN 个线性函数 f1,f2,…,fNf1​,f2​,…,fN​ ,其中 fi(x)=Aix+Bifi​(x)=Ai​x+Bi​ .

求由 KK 组成的序列 p=(p1,p2,…,pK)p=(p1​,p2​,…,pK​) 中 fp1(fp2(…fpK(1)…))fp1​​(fp2​​(…fpK​​(1)…)) 的最大可能值。介于 11 和 NN (含)之间的个不同整数的最大可能值 fp1(fp2(…fpK(1)…))fp1​​(fp2​​(…fpK​​(1)…)) 。

限制因素
  • 1≤N≤2×1051≤N≤2×105
  • 1≤K≤min(N,10)1≤K≤min(N,10)
  • 1≤Ai,Bi≤501≤Ai​,Bi​≤50 (1≤i≤N)(1≤i≤N)
  • 所有输入值均为整数。
做法

我们看到这题肯定是想到了dp。但是吧,这题是要考虑顺序的,就是从n个中选k个,这k个数字的顺序会影响答案。那怎么办呢,我们肯定是不想要去考虑那个顺序的,我们就想把它先排好序。那就看看他能不能排序。我们假设i排在j前更好,那么就有Ai(Aj+Bj) + Bi > Aj(Ai+Bi) + Bj,即Ai*Bj + Bi > Aj*Bi + Bj。把i和i的放在一起,且i的必须放在左边,不然会出错,可能是我们已经加设了i排在j前更好吧,不太懂。然后得到Bi-AjBi > Bj-AiBj,即Bi(1-Aj) > Bj(1-Ai)。然后你可以选择用Bi(1-Aj)排序,或者Bj(1-Ai)排序。

排完序就好办了,dp数组下标:第i到n个选了j个 ; 值:f函数的总值。我们为啥要倒着从n到1来遍历呢,因为函数是从外到里嵌套的,就是根据那个排序来的。

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k;
int dp[200010][20];//下标:第i到n个选了j个  值:f函数的总值 bool cmp(pair<int,int> a,pair<int,int> b){//贪心 //return b.second*(a.first-1) > b.first*(a.second-1);错误的return 1ll*a.second*(1-b.first)>1ll*b.second*(1-a.first);
}signed main(){scanf("%lld%lld",&n,&k);vector< pair<int,int> > v(n+1);for(int i=1;i<=n;i++){cin>>v[i].first>>v[i].second;}sort(v.begin()+1,v.end(),cmp);for(int i=1;i<=n+1;i++){for(int j=0;j<=10;j++){dp[i][j]=-1e6;}}dp[n+1][0]=1;//起初f(x)函数的x是1 for(int i=n;i>=1;i--){for(int j=0;j<=k;j++){dp[i][j]=max(dp[i][j],dp[i+1][j]);//不选 if(j) dp[i][j]=max(dp[i][j],1ll*v[i].first*dp[i+1][j-1]+v[i].second);}}cout<<dp[1][k];}
最后

还是不太理解吧,那个排序函数写的,我改成别的都过不去。

相关文章:

???ABC366:F - Maximum Composition(dp,无序:贪心排序)

问题陈述 给你 NN 个线性函数 f1,f2,…,fNf1​,f2​,…,fN​ &#xff0c;其中 fi(x)AixBifi​(x)Ai​xBi​ . 求由 KK 组成的序列 p(p1,p2,…,pK)p(p1​,p2​,…,pK​) 中 fp1(fp2(…fpK(1)…))fp1​​(fp2​​(…fpK​​(1)…)) 的最大可能值。介于 11 和 NN (含)之间的个不…...

unity项目打包为webgl后应用于vue项目中(iframe模式)的数据交互

参考文章&#xff1a; 1.Unity打包WebGL: 导入Vue 2.unity文档-WebGL&#xff1a;与浏览器脚本交互 3.unity与vue交互(无第三方插件&#xff09; 目录 一、前期工作1.新建.jslib文件2.新建.cs脚本3. 新建一个Text对象和button按钮对象4.添加脚本空对象UIEvent5.导出unity为w…...

【数据结构与算法 | 图篇】Bellman-Ford算法(单源最短路径算法)

1. 前言 前文的迪杰斯特拉算法不能求解有负边的图的最短路径的问题。而此文的Bellman-Ford可以处理含负权边的图算法&#xff0c;并且能检测出图中是否存在负环&#xff08;权重和为负数的环&#xff09;. 2. 基本思想 1. 初始化&#xff1a; 对于所有顶点 v ∈ V \ {s}&am…...

Python | Leetcode Python题解之第336题回文对

题目&#xff1a; 题解&#xff1a; class Solution:def palindromePairs1(self, words: List[str]) -> List[List[int]]:# 核心思想--枚举前缀和后缀# 如果两个字符串k1&#xff0c;k2组成一个回文字符串会出现三种情况# len(k1) len(k2),则需要比较k1 k2[::-1]# len(k1…...

C语言家教记录(六)

导语 本次授课的内容如下&#xff1a;指针&#xff0c;指针和数组 辅助教材为 《C语言程序设计现代方法&#xff08;第2版&#xff09;》 指针 指针变量 计算机按字节划分地址&#xff0c;每个地址访问一个字节 指针变量指向变量的地址&#xff0c;指的是变量第一个字节的…...

C++竞赛初阶L1-11-第五单元-for循环(25~26课)519: T454430 人口增长问题

题目内容 假设目前的世界人口有 x 亿&#xff0c;按照每年 0.1% 的增长速度&#xff0c;n 年后将有多少人&#xff1f; 输入格式 一行两个正整数 x 和 n&#xff0c;之间有一个空格。其中&#xff0c;1≤x≤100,1≤n≤100。 输出格式 一行一个数&#xff0c;表示答案。以亿…...

demo测试

目录 接口commonCodeGenerator entityuser mapperUserMapper controllerUserController serviceUserServiceimplUserServiceImpl mapper.xmlpom.xmlapplication.yml 接口 common CodeGenerator package com.llz.demo.common;import com.baomidou.mybatisplus.core.exceptions…...

TinTinLand Web3 + DePIN 共学月|深入探索 DePIN 项目,全景分析去中心化网络未来

「TinTinLand Web3 主题共学月」是由 TinTinLand 每月发起的主题学习活动&#xff0c;携手知名项目共同打造一个系统化、互动性强的学习平台&#xff0c;帮助开发者不断提升技能&#xff0c;紧跟 Web3 技术的前沿发展。活动通过演示视频、学习打卡、模拟环境、实际操作等多种方…...

Java并发编程(六)

1、java 中有几种方法可以实现一个线程 继承 Thread 类实现 Runnable 接口实现 Callable 接口&#xff0c;需要实现的是 call() 方法 2、如何停止一个正在运行的线程 使用共享变量的方式 在这种方式中&#xff0c;之所以引入共享变量&#xff0c;是因为该变量可以被多个执行…...

k8s对外服务之Ingress

目录 1.Ingress 简介 2.Ingress 组成 3.Ingress-Nginx 工作原理 4.部署 nginx-ingress-controller 5.总结 1.Ingress 简介 service的作用体现在两个方面&#xff0c;对集群内部&#xff0c;它不断跟踪pod的变化&#xff0c;更新endpoint中对应pod的对象&#xff0c;提供了…...

使用Python+moviepy在视频画面上绘制边框

一、 使用VideoFileClip对象的的fx函数设置vfx.margin&#xff0c;在视频画面上绘制边框 from moviepy.editor import * mvVideoFileClip(/home/Download/leaves.mp4) mv2mv.fx(vfx.margin,mar3,color(0,0,255),opacity0.5) # 绘制边框# mar3 &#xff1a;边框宽度3像素&#…...

灵办AI探索之旅:颠覆传统的代码开发工具

前言 灵办AI是一个先进的人工智能工具&#xff0c;专注于提高软件开发和项目管理的效率。其核心功能包括代码生成、优化、评估和自动化修复&#xff0c;旨在帮助开发者和团队提升开发速度和代码质量。 体验地址&#xff1a;https://ilingban.com/browser_extension/?fromjj …...

【Redis】Redis 数据类型与结构—(二)

Redis 数据类型与结构 一、值的数据类型二、键值对数据结构三、集合数据操作效率 一、值的数据类型 Redis “快”取决于两方面&#xff0c;一方面&#xff0c;它是内存数据库&#xff0c;另一方面&#xff0c;则是高效的数据结构。 Redis 键值对中值的数据类型&#xff0c;也…...

Tomcat初篇

目录 Tomcat主要特点Tomcat的核心组件Tomcat使用安装Tomcat配置Tomcat启动和停止Tomcat Tomcat工作原理目录结构配置文件性能优化策略 Tomcat Apache Tomcat是一个开源的Servlet容器和Web服务器&#xff0c;广泛用于运行基于Java的Web应用程序。它实现了Java Servlet和JavaSer…...

机器学习(2)-- KNN算法之手写数字识别

KNN算法 KNN&#xff08;K-Nearest Neighbor&#xff0c;K最近邻&#xff09;算法是一种用于分类和回归的非参数统计方法&#xff0c;尤其在分类问题中表现出色。在手写数字识别领域&#xff0c;KNN算法通过比较测试样本与训练样本之间的距离&#xff0c;找到最近的K个邻居&am…...

【机器人】关于钉钉机器人如何进行自定义开发问答【详细清晰】

目标&#xff1a;当用户输入问题并钉钉机器人&#xff0c;钉钉机器人进行相应的回答&#xff0c;达到一种交互问答的效果 开发文档参考&#xff1a;https://open.dingtalk.com/document/orgapp/robot-overview 首先进行登录企业&#xff0c;后面如果没有进行登录&#xff0c;会…...

Qt:exit,quit,close的用法及区别

前言 虽然能从单词的字面意思大致理解这些函数的意思&#xff0c;但是总感觉不出来它们的区别以及用法&#xff0c;特地去研究一下 正文 在 Qt 中&#xff0c;quit、exit 和 close 都是用于终止程序或关闭窗口的方法 1. QApplication::quit() 注意&#xff1a;注意quit() …...

Linux——进程地址空间

前言 在操作系统中&#xff0c;内存分为以下几个区域&#xff0c;从下往上按照从小到大排列 一、程序地址的分布 代码 #include <stdio.h> #include <stdlib.h> int noval; int val 1;int main(int argc,char*argv[],char*env[]){printf("code addr %p\n&q…...

信创(国产化)方案

信创 信创,即信息技术应用创新,旨在实现信息技术自主可控openEuler openEuler是一款开源、免费的操作系统,由openEuler社区运作,前身为运行在华为公司通用服务器上的操作系统EulerOS。openEuler作为一款开源、免费的操作系统,由开放原子开源基金会(OpenAtom Foundation)…...

EasyRecovery17中文版永久汉化版电脑数据恢复工具下载

&#x1f388;&#x1f389;安利时间到&#xff01;今天要跟大家分享的是——EasyRecovery17中文版的最新功能&#xff01;&#x1f389;&#x1f388; &#x1f31f;✨ “数据恢复小能手” ✨&#x1f31f; 让我来介绍一下这款软件的主打特点。 EasyRecovery17中文版是一款强…...

提升钱包开发效率:用快马AI一键生成imToken风格的高复用UI组件

提升钱包开发效率&#xff1a;用快马AI一键生成imToken风格的高复用UI组件 开发钱包类应用时&#xff0c;最让人头疼的就是那些重复性的UI组件和交互逻辑。每次新项目都要从零开始写资产卡片、交易记录列表、二维码弹窗这些基础组件&#xff0c;不仅耗时耗力&#xff0c;还容易…...

GitHub中文界面终极指南:5分钟让你的GitHub说中文

GitHub中文界面终极指南&#xff1a;5分钟让你的GitHub说中文 【免费下载链接】github-chinese GitHub 汉化插件&#xff0c;GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 想象一下&#xff0c;你…...

NPU vs GPU:为什么你的AI项目需要专用神经网络处理器?

NPU vs GPU&#xff1a;为什么你的AI项目需要专用神经网络处理器&#xff1f; 当你在深夜调试一个实时人脸识别模型时&#xff0c;GPU风扇的轰鸣声是否让你担心电费账单&#xff1f;当部署在边缘设备的图像分类服务因为响应延迟被客户投诉时&#xff0c;是否考虑过硬件选型可能…...

B站Index-AniSora本地部署避坑指南:4张4090显卡实测+常见错误解决

4张RTX 4090实战&#xff1a;Index-AniSora动漫生成模型深度部署手册 当四张RTX 4090显卡同时亮起RGB灯效时&#xff0c;机箱内涌动的不仅是1.2kW的功耗&#xff0c;更是一个能够将二次元幻想转化为动态画面的数字炼金术工坊。B站开源的Index-AniSora模型正在重新定义独立创作者…...

bert-base-chinese新手教程:从零开始学习中文预训练模型部署与使用

bert-base-chinese新手教程&#xff1a;从零开始学习中文预训练模型部署与使用 1. 认识bert-base-chinese模型 1.1 什么是BERT模型 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是Google在2018年发布的预训练语言模型。它通过大规…...

NSudo:突破Windows权限壁垒的系统管理利器

NSudo&#xff1a;突破Windows权限壁垒的系统管理利器 【免费下载链接】NSudo [Deprecated, work in progress alternative: https://github.com/M2Team/NanaRun] Series of System Administration Tools 项目地址: https://gitcode.com/gh_mirrors/ns/NSudo 一、核心价…...

Phi-4-Reasoning-Vision效果展示:低资源语言(如日/韩/西)图文推理能力

Phi-4-Reasoning-Vision效果展示&#xff1a;低资源语言&#xff08;如日/韩/西&#xff09;图文推理能力 1. 多模态推理工具概览 Phi-4-Reasoning-Vision是一款基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具。该工具专为双卡RTX 4090环境优化&#x…...

别再让AI芯片‘睡大觉’了:手把手教你用华为昇腾+CANN搞定异构算力调度

华为昇腾CANN实战&#xff1a;破解AI芯片利用率困局的5个关键策略 推开实验室玻璃门&#xff0c;迎面是十几台Atlas 800服务器闪烁的指示灯&#xff0c;而工程师小王正对着监控大屏上30%的平均利用率皱眉——这场景在采用国产AI芯片的团队中太常见了。当我们谈论异构算力调度时…...

vLLM-v0.17.1保姆级教程:SSH中查看vLLM实时请求队列与Pending统计

vLLM-v0.17.1保姆级教程&#xff1a;SSH中查看vLLM实时请求队列与Pending统计 1. vLLM框架简介 vLLM是一个专注于大语言模型(LLM)推理和服务的高性能库&#xff0c;它的设计目标是让开发者能够轻松部署和管理大规模语言模型。这个项目最初由加州大学伯克利分校的天空计算实验…...

从CLPM到RI-CLPM:Mplus中交叉滞后模型的进阶指南与选择策略

从CLPM到RI-CLPM&#xff1a;纵向数据分析的模型选择与实战解析 在心理学和行为科学的纵向研究中&#xff0c;交叉滞后模型&#xff08;CLPM&#xff09;长期以来是分析变量间相互影响关系的标准工具。然而&#xff0c;随着研究方法论的进步&#xff0c;研究者们逐渐认识到传统…...