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

正题


题目大意

nnn个士兵在不同的位置,自己每秒可以往左移或者往右移动1格,并且干掉改格所在的士兵。
mmm秒,第kkk秒干掉士兵可以获得m−km-kmk的价值,求最大价值之和。


解题思路

离散化先
然后我们干掉的士兵一定一个线段,所以我们设
fi,j,t,0/1f_{i,j,t,0/1}fi,j,t,0/1表示第tst\ st s已经干掉了i∼ji\sim jij的士兵,然后在最左边还是在最右边

但是我们发现ttt的范围十分的大,我们考虑转换。

假设我们总共要干掉kkk个人,如果还剩下zzz个人没被干掉,那么没移动一步就会消耗kkk点价值。

那么我们就可以列出新的方程fi,j,k,0/1f_{i,j,k,0/1}fi,j,k,0/1表示总共要干掉i∼ji\sim jij的士兵,然后在最左边还是在最右边。

然后因为全程kkk那个维度不会有任何交接我们可以不用记录,但是还是要枚举kkk

最终状态:
fi,j,0/1f_{i,j,0/1}fi,j,0/1表示总共干掉kkk个人,已经干掉了i∼ji\sim jij的人,在最左边还是在最右边,

那么我们可以列出动态转移方程
fi,j,0=max{fi+1,j,0+m−dist(i,i+1)∗(k−j+i),fi+1,j,1+m−dist(i,j)∗(k−j+i)}f_{i,j,0}=max\{f_{i+1,j,0}+m-dist(i,i+1)*(k-j+i),f_{i+1,j,1}+m-dist(i,j)*(k-j+i)\}fi,j,0=max{fi+1,j,0+mdist(i,i+1)(kj+i),fi+1,j,1+mdist(i,j)(kj+i)}
fi,j,1=max{fi,j−1,1+m−dist(j,j−1)∗(k−j+i),fi,j−1,0+m−dist(i,j)∗(k−j+i)}f_{i,j,1}=max\{f_{i,j-1,1}+m-dist(j,j-1)*(k-j+i),f_{i,j-1,0}+m-dist(i,j)*(k-j+i)\}fi,j,1=max{fi,j1,1+mdist(j,j1)(kj+i),fi,j1,0+mdist(i,j)(kj+i)}

然后答案就是fl,r(r−l+1=k,mid∈[l..r])f_{l,r}(r-l+1=k,mid\in [l..r])fl,r(rl+1=k,mid[l..r])


codecodecode

#pragma GCC optimize(2)
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cctype> 
using namespace std;
const int N=320;
int n,m,a[N],ans,K;
int f[N][N][2];
inline int read() {int x=0,f=1; char c=getchar();while(!isdigit(c)) {if(c=='-')f=-f;c=getchar();}while(isdigit(c)) x=(x<<1)+(x<<3)+c-48,c=getchar();return x*f;
}
int main()
{n=read();m=read();for(int i=1;i<=n;i++)a[i]=read();a[++n]=0;sort(a+1,a+1+n);int mid=lower_bound(a+1,a+1+n,0)-a;for(K=1;K<=n;K++){memset(f,0xcf,sizeof(f));f[mid][mid][0]=f[mid][mid][1]=0;for(int i=mid;i>0;i--)for(int j=mid;j<=n;j++){if(i==j) continue; if(j-i+1>K) break;f[i][j][0]=max(f[i+1][j][0]+m-(a[i+1]-a[i])*(K-j+i),f[i+1][j][1]+m-(a[j]-a[i])*(K-j+i));f[i][j][1]=max(f[i][j-1][1]+m-(a[j]-a[j-1])*(K-j+i),f[i][j-1][0]+m-(a[j]-a[i])*(K-j+i));if(j-i+1==K) ans=max(ans,max(f[i][j][0],f[i][j][1]));} }printf("%d",ans); 
}

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

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

相关文章

《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; 一份超详细…

nssl1323,jzoj(初中)2107-交流【dfs,容斥,组合数】

正题 题目大意 对于mmm个字符串&#xff0c;一些地方是???表示可以填任意字符。 每一个目标串要满足至少kkk个串。 求方案总数。 解题思路 首先暴力搜索一些串选择或不选择&#xff0c;然后容斥。 选择之后我们可以得出一个串KKK我们称之为最终串&#xff0c;这时我们可以…

助力中小企业级连云端,促进工业互联网平台蓬勃发展,全套解决方案。附:技术产品

1&#xff0e;概述经过两年多团体的努力&#xff0c;四个产品终于面世了&#xff0c;做产品不容易&#xff0c;做好产品更不容易&#xff0c;最终形成了体系化的解决方案。下面具体介绍。行业大数据平台以及工业互联网平台的发展是必然趋势&#xff0c;结合自己的工作经验&…

欢乐SSL初二组周六赛【2019.5.11】

前言 难度差异极大 成绩 只放前101010&#xff0c;JJJ表示初中&#xff0c;HHH表示高中 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCCDDD111(J)2017WYC(J)2017WYC(J)2017WYC296296296100100100100100100767676202020222(J)2017ZYC(J)2017ZYC(J)2017ZYC2542542541…

基于百度AI实现 车牌识别

前言目前百度的AI接口相对完善&#xff0c;对于文字识别类的操作还需要开发者一一去尝试&#xff0c;去评估这效果到底是怎么的。文字识别的接口相对简单&#xff0c;官方提供的SDK也集成很好&#xff0c;笔者只是在这上面做了一些前期性的功能数据校验和过滤&#xff0c;以及返…

面试官问我:Redis 内存满了怎么办

转载自 想不到&#xff01;面试官问我&#xff1a;Redis 内存满了怎么办 Redis占用内存大小 Redis的内存淘汰 LRU算法 LRU在Redis中的实现 LFU算法 问题 Redis占用内存大小 我们知道Redis是基于内存的key-value数据库&#xff0c;因为系统的内存大小有限&#xff0c;所以…

开源组件NanUI一周年 - 使用HTML/CSS/JS来构建.Net Winform应用程序界面

NanUI是什么NanUI基于ChromiumFX项目进行开发&#xff0c;它能让你在你的Winform应用程序中使用HTML5/CSS3/Javascript等网页技术来呈现用户界面&#xff08;类似Electron&#xff09;。同时NanUI提供了原生窗口和定制化的无标题栏无边框窗口&#xff0c;你能使用全部的网页技术…

ThreadPoolExecutor 八种拒绝策略,对的,不是4种

转载自 ThreadPoolExecutor 八种拒绝策略&#xff0c;对的&#xff0c;不是4种 前言 谈到 Java 的线程池最熟悉的莫过于 ExecutorService 接口了&#xff0c;jdk1.5 新增的 java.util.concurrent 包下的这个 api&#xff0c;大大的简化了多线程代码的开发。而不论你用 Fixed…

P2842-LJJ算数【数论,快速幂】

正题 题目链接:https://www.luogu.org/problemnew/show/P2842 题目大意 求 a#baaaa…a(a\#ba^{a^{a^{a^{…^a}}}}(a#baaaa…a(进行幂运算b次) 解题思路 根据费马小当p为质数时 ap≡a(modp)a^p\equiv a(mod\ p)ap≡a(mod p) 推导得ab≡ab%(p−1)(modp)a^b\equiv a^{b\%(p-1)}…

采用Opserver来监控你的ASP.NET项目系列(三、监控你的服务器状态)

前言之前有过2篇关于如何监控ASP.NET core项目的文章,有兴趣的也可以看看. ASP.NET Core之跨平台的实时性能监控ASP.NET Core之跨平台的实时性能监控(2.健康检查)今天我们主要来介绍一下,如何使用Opserver监控我们的服务器状态.Opserver的功能其实很强大,他可以用于连接任何支持…

Spark入门(八)之WordCount

一、WordCount 计算文本里面的每个单词出现的个数&#xff0c;输出结果。 二、maven设置 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSch…

(一)Web Service——基本概念

1.1 什么是web服务 这里列举一些常见的web服务&#xff1a; 手机淘宝、京东…. 天气预报 手机号归属地 股票查询 发手机短消息 手机充值功能 中英文翻译 银行转账业务 公司的“进销存系统”在某商品缺货时自动给供应商下订单 1.2 简介 (1) webservice 即web服务&am…

Spark入门(九)之PI估值

一、Pi估值算法 通过在圆上“投掷飞镖”来估计π。我们在单位平方&#xff08;&#xff08;0&#xff0c;0&#xff09;到&#xff08;1&#xff0c;1&#xff09;&#xff09;中随机选取点&#xff0c;看看有多少点落在单位圆内。分数应该是π/4&#xff0c;所以我们用这个来…

P1943-LocalMaxima_NOI导刊2009提高(1)【数论】

正题 题目链接:https://www.luogu.org/problemnew/show/P1943 题目大意 定义LocalLocalLocal数为一个数且比它前面的数字都要大。 求一个随机长度为nnn的序列中LoaclLoaclLoacl数的期望数量。 解题思路 ansLocal(a)n!ans\frac{Local(a)}{n!}ansn!Local(a)​ 现在我们分开求…

Net Core中数据库事务隔离详解——以Dapper和Mysql为例

事务隔离级别.NET Core中的IDbConnection接口提供了BeginTransaction方法作为执行事务&#xff0c;BeginTransaction方法提供了两个重载&#xff0c;一个不需要参数BeginTransaction()默认事务隔离级别为RepeatableRead;另一个BeginTransaction(IsolationLevel il)可以根据业务…

2017年,我的身边发生了那些事?

不知不觉&#xff0c;运营独具.NET跨平台特色的微信公众号&#xff1a;dotNet跨平台至今已经整整三年光景了&#xff0c;这三年里微软开源.NET也满三周年了。三年时间说长不长&#xff0c;说短也不短了&#xff0c;然而我还是保持着每天三篇的更新 &#xff0c;或有感而原创&am…

(二)利用Java WebService调用天气预报实践

最近要和其他业务系统进行数据交换&#xff0c;选择了webservice方案&#xff0c;于是查了一下网上的用法。首先是做一个天气的查询例子&#xff0c;看着挺简单&#xff0c;可实际动手做起来发现坑很多&#xff0c;费了半天劲终于调通了&#xff0c;于是记录下来。 1&#xff…

Spark入门(十)之Distinct去重

一、Distinct 计算文本里面的每个单词去重&#xff0c;输出结果。 二、maven设置 <?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-ins…

牛客练习赛46T1-华华教奕奕写几何【数学】

正题 题目链接:https://ac.nowcoder.com/acm/contest/894/A 题目大意 一个大半圆里面放两个小半圆要求两个小半圆的半径之和等于大半圆的半径&#xff0c;而且红色面积为SSS。 求最小的大半圆的半径。 解题思路 假设小半圆的半径为x,yx,yx,y那么大半圆的半径为xyxyxy。那么我…