jzoj4245-er【dp,贪心】

正题


题目大意

nnn个武器(n≤2n\leq2n2),mmm个符文

符文1:直接改变一个武器的攻击力(最多一个)

符文2:增加一个武器的攻击力

符文3:使一个人的武器攻击力翻若干倍

求武器攻击力乘积最大,输出答案的自然对数。


解题思路

首先log(ab)=log(a)+log(b)log(ab)=log(a)+log(b)log(ab)=log(a)+log(b)

然后乘积的就不管,最后答案加上就好了,我们只考虑前两种

n=1n=1n=1时直接暴力枚举选多少加攻击的。

n=2n=2n=2时我们考虑dpdpdp。首先我们肯定选大的,主要考虑哪个加在哪个上面。

fi,jf_{i,j}fi,j表示前iii个符文,第一个武器攻击力为jjj时的武器威力乘积。我们维护一下前缀和就可以计算第二个武器的攻击力

若加在第一个符文上fi,j=min{fi−1,j−addi+addi∗(sumi−j)}f_{i,j}=min\{f_{i-1,j-add_i}+add_i*(sum_i-j)\}fi,j=min{fi1,jaddi+addi(sumij)}
若加在第二个符文上fi,j=min{fi−1,j+addi∗j}f_{i,j}=min\{f_{i-1,j}+add_i*j\}fi,j=min{fi1,j+addij}

然后转移。

之后暴力枚举加的符文选几个,其他都选乘的。

对于符文1,直接处理333


codecodecode

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
const int N=110;
int n,m,k,add[N],sum[N],cnt1,cnt2,mul[N];
int fff,f[N][N*2000],maxs[N],a1,a2;
double ans,summ[N];
bool cmp(int x,int y)
{return x>y;}
int main()
{//freopen("data.in","r",stdin);//freopen("data.out","w",stdout);scanf("%d%d%d",&n,&m,&k);scanf("%d",&a1);if(n==2) scanf("%d",&a2);for(int i=1;i<=m;i++){int x,t;scanf("%d%d",&t,&x);if(t==1) fff=x;if(t==2) add[++cnt1]=x;if(t==3) mul[++cnt2]=x;}sort(add+1,add+1+cnt1,cmp);sort(mul+1,mul+1+cnt2,cmp);sum[0]=a1+a2;for(int i=1;i<=k;i++){summ[i]=summ[i-1]+log(mul[i]);sum[i]=sum[i-1]+add[i];}if(n==1){for(int i=0;i<=k;i++){ans=max(ans,log(sum[min(i,cnt1)])+summ[min(k-i,cnt2)]);if(i!=k&&fff)ans=max(ans,log(sum[min(i,cnt1)])+summ[min(k-i-1,cnt2)]);}printf("%.3lf\n",ans);return 0;}memset(f,0xcf,sizeof(f));f[0][a1]=a1*a2;for(int i=0;i<=cnt1;i++){for(int j=a1;j<=sum[i];j++){f[i+1][j]=max(f[i][j]+add[i+1]*j,f[i+1][j]);f[i+1][j+add[i+1]]=max(f[i][j]+add[i+1]*(sum[i]-j),f[i+1][j+add[i+1]]);maxs[i]=max(maxs[i],f[i][j]);}}for(int u=0;u<=k;u++){int mu=min(k-u,cnt2);ans=max(ans,log(maxs[min(u,cnt1)])+summ[mu]);}if(fff){k--;sum[0]=fff+a2;for(int i=1;i<=k;i++)sum[i]=sum[i-1]+add[i];memset(f,0xcf,sizeof(f));memset(maxs,0,sizeof(maxs));f[0][fff]=fff*a2;for(int i=0;i<=k;i++){for(int j=fff;j<=sum[i];j++){f[i+1][j]=max(f[i][j]+add[i+1]*j,f[i+1][j]);f[i+1][j+add[i+1]]=max(f[i][j]+add[i+1]*(sum[i]-j),f[i+1][j+add[i+1]]);maxs[i]=max(maxs[i],f[i][j]);}}for(int u=0;u<=k;u++){int mu=k-u;ans=max(ans,log(maxs[u])+summ[mu]);}sum[0]=a1+fff;for(int i=1;i<=k;i++)sum[i]=sum[i-1]+add[i];memset(f,0xcf,sizeof(f));memset(maxs,0,sizeof(maxs));f[0][a1]=a1*fff;for(int i=0;i<=k;i++){for(int j=a1;j<=sum[i];j++){f[i+1][j]=max(f[i][j]+add[i+1]*j,f[i+1][j]);f[i+1][j+add[i+1]]=max(f[i][j]+add[i+1]*(sum[i]-j),f[i+1][j+add[i+1]]);maxs[i]=max(maxs[i],f[i][j]);}}for(int u=0;u<=k;u++){int mu=k-u;ans=max(ans,log(maxs[u])+summ[mu]);}}printf("%.3lf",ans);
}

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

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

相关文章

Hadoop生态Flume(四)拦截器(Interceptor)介绍与使用(2)

转载自 Flume中的拦截器&#xff08;Interceptor&#xff09;介绍与使用&#xff08;二&#xff09; lume中的拦截器&#xff08;interceptor&#xff09;&#xff0c;用户Source读取events发送到Sink的时候&#xff0c;在events header中加入一些有用的信息&#xff0c;或者对…

协作更进一步:微软隆重介绍Visual Studio动态分享功能

微软刚刚在 Visual Studio Code 网站上宣布了“动态分享”&#xff08;Live Share&#xff09;功能&#xff0c;开发者们可以在 VS 2017 或 VS Code 中体验全新的实施协作。微软表示&#xff0c;Live Share 可让团队在相同的代码库上启用快速协作&#xff0c;而无需同步代码或配…

python打包exe文件

首先安装pyinstaller pip3 install pyinstaller接着导报指定文件 pyinstaller.exe -F 文件路径文件名 举例 pyinstaller.exe -F C:\Users\Tecna1205\Desktop\工作目录\Python工作目录\测试\3.3\test\tk.py 如果有图形界面&#xff0c;不想打开命令行&#xff0c;可在打包命令…

SpringBoot maven打包源码发布到仓库配置

一、项目pom.xml配置 添加发布仓库 配置上传源码 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocatio…

使用MS Test做单元测试

声明&#xff1a;本篇博客翻译自&#xff1a;http://www.c-sharpcorner.com/article/unit-testing-with-ms-tests-in-c-sharp/ 写在翻译之前&#xff1a; 依然清晰的记得刚工作的第一个项目中&#xff0c;在完成一个功能模块开发后&#xff0c;师傅让我把代码做一下单元测试。当…

jzoj4246-san【最短路,SPFA,DAGdp】

正题 题目大意 nnn个点&#xff0c;mmm条边&#xff0c;若两个点之间的任意一条最短路长度为奇数则称之为不和谐最短路。求每个点有多少条不和谐最短路经过。 解题思路 首先SPFASPFASPFA求一个多元最短路。 然后枚举起点&#xff0c;对于每个起点&#xff0c;我们只走最短路上…

Vue组件传参

父组件向子组件传参 数据&#xff1a; 父组件 <test :message"msg"></test>msg: Hello uniApp子组件&#xff08;test.vue&#xff09; <text>{{message}}</text>props:["message"]子组件向父组件传参 子组件&#xff1a; &…

SpringBoot2.1.9 多Kafka消费者配置

一、配置文件 pom.xml <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId> </dependency> application.yml spring:application:name: double-kafka-consumerprofiles:active: devjacks…

如果不懂Service mesh,就不要谈微服务了

提到微服务&#xff0c;spring cloud等经典框架被使用的最为广泛&#xff0c;但是在2016年才被提起的Service Mesh&#xff0c;已经被Paypal、Lyft、Ticketmaster和Credit Karma等等一些大流量平台所使用&#xff0c;在生产应用中添加了Service mesh。今年随着Linkerd传入国内&…

欢乐纪中某B组赛【2019.1.29】

前言 Rank1Rank1Rank1耶 成绩 RankRankRank是有算别人的 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC1112017myself2017myself2017myself2802802801001001008080801001001003332017xjq2017xjq2017xjq2002002001001001000001001001001212122017hjq2017hjq2017hjq15…

mysq和mysqli关系

1、在php5版本之前&#xff0c;一般是用php的mysql函数去驱动mysql数据库的&#xff0c;比如mysql_query()的函数&#xff0c;属于面向过程. 2、在php5版本以后&#xff0c;增加了mysqli的函数功能&#xff0c;某种意义上讲&#xff0c;它是mysql系统函数的增强版&#xff0c;更…

SpringBoot2.1.9 分布式锁ShedLock

一、分布式锁配置 &#xff08;1&#xff09;redis锁 pom.xml <dependency><groupId>net.javacrumbs.shedlock</groupId><artifactId>shedlock-spring</artifactId><version>2.5.0</version> </dependency><dependency&…

使用AspectCore动态代理

前言 最近越来越多的同学关注到AspectCore&#xff0c;并且提出不少中肯的建议&#xff0c;其中最多的提议是希望能够看到更多的关于AspectCore使用方式的文章和Demo。那么在这篇文章里&#xff0c;我们就来聊聊AspectCore核心之一的动态代理。 动态代理 在.NET平台中&#xff…

P1131-[ZJOI2007]时态同步【树形dp】

正题 题目大意 一棵树&#xff0c;可以增长边权长度&#xff0c;要求根节点要每个叶子节点路径长度相等&#xff0c;求最少增加次数。 解题思路 肯定优先修改上面的边&#xff0c;因为这样可以影响最多的点&#xff0c;那么对于每个节点我们都要使它到每个它子树中叶子节点的…

已经安装完成mysql后wamp怎么配置

如果之前安装过mysql&#xff0c;然后想要安装wamp&#xff0c;那么怎么配置呢 先安装好wamp&#xff0c;然后在以下目录中修改my.ini 将密码改为自己的mysql密码即可 这时你发现启动wamp还是黄的 不要慌&#xff0c;因为你已经安装过了wamp&#xff0c;所以wamp自己的mys…

SpringBoot2.1.9 分布式锁ShedLock不执行坑

一、起由 Configuration EnableScheduling EnableSchedulerLock(defaultLockAtMostFor "PT30S") public class TimerTaskConfig implements SchedulingConfigurer {Beanpublic LockProvider scheduledLockConfiguration(RedisConnectionFactory redisConn) {return…

P3891-[GDOI2014]采集资源【背包,dp】

正题 题目大意 nnn个苦力&#xff0c;aia_iai​资源招募&#xff0c;每sss生产bib_ibi​资源。开始有mmm点资源&#xff0c;求最短时间内生产ttt点资源。 解题思路 先计算fif_ifi​表示花费iii点资源最多可以获得多少生产力。 然后gi,jg_{i,j}gi,j​表示前iii个单位时间资源为…

通过 Visual Studio 的“代码度量值”来改进代码质量

1 软件度量值指标 1.1 可维护性指数 表示源代码的可维护性&#xff0c;数值越高可维护性越好。该值介于0到100之间。绿色评级在20到100之间&#xff0c;表明该代码具有高度的可维护性&#xff1b;黄色评级在10到19之间&#xff0c;表示该代码适度可维护&#xff1b;红色评级在0…

php如何接收前端返回的各种类型的数据

之前学习node后端的时候&#xff0c;因为始终无法在网上找到接收json数据的函数&#xff0c;所以后来就放弃了。最近又心血来潮&#xff0c;想学习php. 这次已经有了之前学习php的基础&#xff0c;所以直接入手thinkphp5.0 这次php的学习&#xff0c;主要是为了解决之前遗留的问…

面试官让我讲讲Java中的锁,我笑了

转载自 面试官让我讲讲Java中的锁&#xff0c;我笑了 在读很多并发文章中&#xff0c;会提及各种各样锁如公平锁&#xff0c;乐观锁等等&#xff0c;这篇文章介绍各种锁的分类。介绍的内容如下&#xff1a; 公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁…