P4945-最后的战役【dp,离散化】

正题

题目大意:https://www.luogu.org/problemnew/show/P4945


题目大意

isi\ si s可以

  1. 获取1∼i1\sim i1i中最大的能量
  2. 获取1∼i1\sim i1i中类型为xix_ixi的能量
  3. 下一秒能量加倍(只能使用mmm次,不可以连续使用)

求最大获取能量


解题思路

考虑dpdpdp,定义fi,j,kf_{i,j,k}fi,j,k表示第isi\ si s和使用了jjj次加倍,这次是否使用加倍
首先我们如果获取能量肯定是选择111222操作中最多的那个,
定义w=max{max{pj}(j≤i),∑j=1ipj∗(kj==xi)}w=max\{max\{p_j\}(j\leq i),\sum_{j=1}^ip_j*(k_j==x_i)\}w=max{max{pj}(ji),j=1ipj(kj==xi)}
第一个好求,第二个我们可以用离散化

然后开始dpdpdp,如果这次使用魔法
fi,j,1=fi−1,j−1,0f_{i,j,1}=f_{i-1,j-1,0}fi,j,1=fi1,j1,0
然后如果获取能量
fi,j,0=max{fi−1,j,0+w,fi−1,j,1+2∗w}f_{i,j,0}=max\{f_{i-1,j,0}+w,f_{i-1,j,1}+2*w\}fi,j,0=max{fi1,j,0+w,fi1,j,1+2w}

时间复杂度:O(2nm)O(2nm)O(2nm)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N=5e4+10,M=510;
int n,m,k[N],p[N],x[N],len;
int ans,b[N],w[N],f[N][M][2],maxs; 
int main()
{//f[i][j][0/1]表示第i秒,还剩下j个加倍,上一秒是否使用了魔法scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf("%d%d",&k[i],&p[i]);b[i]=k[i];} sort(b+1,b+1+n);len=unique(b+1,b+1+n)-b-1;for(int i=1;i<=n;i++){scanf("%d",&x[i]);int check=x[i];x[i]=lower_bound(b+1,b+1+len,x[i])-b;if(check!=b[x[i]]) x[i]=0;k[i]=lower_bound(b+1,b+1+len,k[i])-b;}memset(f,0xcf,sizeof(f));f[0][0][0]=0; for(int i=1;i<=n;i++){maxs=max(maxs,p[i]);w[k[i]]+=p[i];int z=max(maxs,w[x[i]]);for(int j=0;j<=m;j++){if(j!=0) f[i][j][1]=f[i-1][j-1][0];f[i][j][0]=max(f[i-1][j][0]+z,f[i-1][j][1]+2*z);if(i==n)ans=max(ans,max(f[i][j][1],f[i][j][0]));}}printf("%d",ans);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET开源三周年

3 年前&#xff0c;微软宣布开源 .NET 框架的大部分内容。正如Scott Hanselman在Connect 2016主题演讲中所说的那样&#xff0c;微软一直在做重大贡献&#xff1a;开源 .NET 框架并不总是一帆风顺的&#xff0c;可以肯定的说&#xff0c;总是会遇到一些困难。在过去的三年中&am…

Viewpager的使用

第一&#xff1a; 首先在activity_main中加入Viewpager控件 <androidx.viewpager.widget.ViewPagerandroid:layout_width"match_parent"android:layout_height"match_parent"android:id"id/viewPager"></androidx.viewpager.widget.Vi…

消息中间件MQ与RabbitMQ面试题(2020最新版)

转载自 消息中间件MQ与RabbitMQ面试题&#xff08;2020最新版&#xff09; 为什么使用MQ&#xff1f;MQ的优点 简答 异步处理 - 相比于传统的串行、并行方式&#xff0c;提高了系统吞吐量。 应用解耦 - 系统间通过消息通信&#xff0c;不用关心其他系统的处理。 流量削锋 …

P4981-父子【数学,树】

正题 题目链接:https://www.luogu.org/problemnew/show/P4981 题目大意 求nnn个点的有根树个数。 解题思路 根据CayleyCayleyCayley定理nnn个点的有根树个数是nn−1n^{n-1}nn−1 证明&#xff1a; 先证明标号树枝的个数 先是nnn个没有边的点&#xff0c;加入了kkk条边后剩下…

IdentityServer4 第三方快速入门和示例

这些示例不由IdentityServer团队维护。 IdentityServer团队提供链接到了社区示例&#xff0c;但不能对示例做任何保证。 如有问题&#xff0c;请直接与作者联系。各种ASP.NET Core安全示例https://github.com/leastprivilege/AspNetCoreSecuritySamplesIdentityServer4 EF 和 A…

开发规范以及注意点

preiteer在保存时不格式化文件 Vscode回车到下一行的时候&#xff0c;不保留缩进 加上这一句即可 "editor.autoIndent": "keep",<template><div class"strategy-edit" v-loading"loading"><el-formclass"strateg…

Java并发编程面试题(2020最新版)

转载自 Java并发编程面试题&#xff08;2020最新版&#xff09; 基础知识 并发编程的优缺点 为什么要使用并发编程&#xff08;并发编程的优点&#xff09; 充分利用多核CPU的计算能力&#xff1a;通过并发编程的形式可以将多核CPU的计算能力发挥到极致&#xff0c;性能得到…

P1445-[Violet]樱花【数学】

正题 题目链接:https://www.luogu.org/problemnew/show/P1445 题目大意 求有多少个x,yx,yx,y满足 1x1y1n!\frac{1}{x}\frac{1}{y}\frac{1}{n!}x1​y1​n!1​ 解题思路 xyxy1n!\frac{xy}{xy}\frac{1}{n!}xyxy​n!1​ n!(xy)xyn!(xy)xyn!(xy)xy xy−n!(xy)0xy-n!(xy)0xy−n!(xy…

.NET Core容器化之多容器应用部署@Docker-Compose

1.引言紧接上篇.NET Core容器化Docker&#xff0c;这一节我们先来介绍如何使用Nginx来完成.NET Core应用的反向代理&#xff0c;然后再介绍多容器应用的部署问题。2. Why Need Nginx.NET Core中默认的Web Server为Kestrel。Kestrel is great for serving dynamic content from …

nssl1320,jzoj(初中)2108-买装备【dfs,水题】

正题 题目大意 nnn个物品有ai,bi,via_i,b_i,v_iai​,bi​,vi​&#xff0c;要求 选择若干个物品使得aia_iai​之和大于AAA&#xff0c;bib_ibi​之和大于BBB&#xff0c;viv_ivi​之和最小 解题思路 暴力dfsdfsdfs选哪些。 时间复杂度O(2n)O(2^n)O(2n) codecodecode #include…

vue3子组件调用父组件的方法

子组件调用父组件的方法 首先在父组件中&#xff1a; <ImportExcel onQuery"onQuery" />使用这个符号在子组件中注入这个方法 在子组件中调用&#xff1a; 首先声明&#xff1a; const emit defineEmits([onQuery]); 之后调用&#xff1a;emit(‘onQuery’)…

ServerSuperIO Designer IDE 发布,打造物联网通讯大脑,随心而联。附:C#驱动源代码。

1.概况注&#xff1a;ServerSuperIO Designer IDE 同行业网友随便使用&#xff0c;不涉及到软件使用限制的问题。从2015年到现在的将近两年的时间&#xff0c;一直在开发、完善ServerSuperIO&#xff08;SSIO&#xff09;的基础框架&#xff0c;包括&#xff1a;多通讯机制、稳…

MySQL数据库面试题(2020最新版)

转载自 MySQL数据库面试题&#xff08;2020最新版&#xff09; 数据库基础知识 为什么要使用数据库 数据保存在内存 优点&#xff1a;存取速度快 缺点&#xff1a;数据不能永久保存 数据保存在文件 优点&#xff1a;数据永久保存 缺点&#xff1a;1&#xff09;速度比内…

nssl1321,jzoj(初中)2106-买门票【dfs,暴力,字符串】

正题 题目大意 给定一些字母&#xff0c;用字母组成一个单词要求满足 从小到大有1个元音字母有2个辅音字母长度为LLL 输出字典序最小的250002500025000个。 解题思路 暴力搜索时间复杂度 O(CNL)O(C_{N}^L)O(CNL​) codecodecode #include<cstdio> #include<iostr…

用node完成查询功能

1、controller里面导入 router.post("/test", accountController.test);2、声明test方法 let list await model.test.findAll();data { status: 200, data: { list: list } };return res.send(data);3、创建test数据库和model里面的test.js /*** author: metacamp…

分布式系统的消息服务模式简单总结

在一个分布式系统中&#xff0c;有各种消息的处理&#xff0c;有各种服务模式&#xff0c;有同步异步&#xff0c;有高并发问题甚至应对高并发问题的Actor编程模型&#xff0c;本文尝试对这些问题做一个简单思考和总结。一、消息的“推、拉模式” 在传统的Client/Server结构中&…

Spring Cloud面试题(2020最新版)

转载自 Spring Cloud面试题&#xff08;2020最新版&#xff09; 为什么需要学习Spring Cloud 不论是商业应用还是用户应用&#xff0c;在业务初期都很简单&#xff0c;我们通常会把它实现为单体结构的应用。但是&#xff0c;随着业务逐渐发展&#xff0c;产品思想会变得越来…

nssl1322,jzoj(初中)2109-清兵线【dp】

正题 题目大意 nnn个士兵在不同的位置&#xff0c;自己每秒可以往左移或者往右移动1格&#xff0c;并且干掉改格所在的士兵。 有mmm秒&#xff0c;第kkk秒干掉士兵可以获得m−km-km−k的价值&#xff0c;求最大价值之和。 解题思路 离散化先 然后我们干掉的士兵一定一个线段&a…

《Office 365 开发入门指南》

终于等来了这一天&#xff0c;可以为我的这本新书画上一个句号。我记得是在今年的2月份从西雅图回来之后&#xff0c;就萌发了要为中国的Office 365开发人员写一些东西并最终能帮到更多中国用户的想法&#xff0c;而从2月26日正式写下了第一篇&#xff0c;到今天正好是整整十个…

最新 Spring 系列教程,都在这了

转载自 最新 Spring 系列教程&#xff0c;都在这了 Spring Boot 系列 什么是 Spring Boot? 公司不用 Spring Boot&#xff0c;果断离职了&#xff01; 告诉你&#xff0c;Spring Boot 真是个牛逼货&#xff01; 年轻人的第一个 Spring Boot 应用&#xff01; 一份超详细…