首页 > 其他分享 >D. Keep the Average High

D. Keep the Average High

时间:2023-03-24 22:11:27浏览次数:37  
标签:子串 int max Average long Keep High solve

https://codeforces.com/problemset/problem/1616/D
great question!
题解:首先我们令a[i]-=x,这样条件变成了区间和>=0.由裴蜀定理,n可以分解为2x+3y。
我们提出以下命题:对于a中任意子串之和>=0等价于任意长度为2或3的子串和>=0。
充分性显然。对于必要性,对任意长度大于3的子串,可分解为若干2子串和3子串,其和>=0故总体和>=0得证。
故我们可以dp,令f[i][0/1][0/1]表示前i个元素,i-1位不选/选,i位不选/选,则可O(1)转移,总复杂度位O(n),转移方程见代码。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5e4+100;
int a[N],f[N][2][2];
void solve(){
	int n;cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	int x;cin>>x;
	for(int i=1;i<=n;i++) a[i]-=x;
	a[0]=0;
	f[1][0][1]=1,f[1][0][0]=0,f[1][1][0]=0,f[1][1][1]=1;
	for(int i=2;i<=n;i++){
		f[i][0][0]=max(f[i-1][0][0],f[i-1][1][0]);
		f[i][1][0]=max(f[i-1][0][1],f[i-1][1][1]);
		f[i][0][1]=max(f[i-1][0][0],f[i-1][1][0])+1;
		if(a[i]+a[i-1]<0) f[i][1][1]=-1;
		else{
			f[i][1][1]=f[i-1][0][1]+1;
			if(a[i-2]+a[i-1]+a[i]>=0){
				f[i][1][1]=max(f[i][1][1],f[i-1][1][1]+1);
			}
		}
		
	}
	int ans=max({f[n][0][0],f[n][0][1],f[n][1][0],f[n][1][1]});
		cout<<ans<<endl;
}
signed main(){
	int T;cin>>T;
	while(T--) solve();
}

标签:子串,int,max,Average,long,Keep,High,solve
From: https://www.cnblogs.com/wjhqwq/p/17253493.html

相关文章

  • zookeeper集群搭建
    1.zookeeper介绍ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致......
  • [ChatGPT-3.5] How to keep conusming using python rocketmq.client.PushConusmer?
    在使用PythonRocketMQ的PushConsumer进行消息消费时,需要进行以下步骤:创建PushConsumerfromrocketmq.clientimportPushConsumer,ConsumeStatusconsumer=......
  • Java操作Elasticsearch 之 [Java High Level REST Clientedit]
    <aname="VbjtD"></a>1.简述Elasticsearch是基于Lucene开发的一个分布式全文检索框架,向Elasticsearch中存储和从Elasticsearch中查询,格式是json。向Elasticsearch......
  • lvs+keepalived集群
    使用lvs+keepalived架构架构实现后端web服务器(该web服务器要求搭建wordpress博客站)的负载均衡最终客户端访问域名    我的名字.wordpress.cn 能够访问搭建的博客站......
  • Keepalived安装部署
    title:Keepalived安装部署date:2022-10-22tags:-Linux-keepalivecategories:-运维-Nginx-keepalivedkeywords:'Linux,keepalived'cover:https://q......
  • Springboot 系列 (24) - Springboot+HBase 大数据存储(二)| 安装配置 Apache HBase 和 A
    ApacheHBase是Java语言编写的一款Apache开源的NoSQL型数据库,不支持SQL,不支持事务,不支持Join操作,没有表关系。ApacheHBase构建在ApacheHadoop和ApacheZoo......
  • python redis keepalive 保活
     https://dxian.github.io/2016/07/21/python-redis-subscribe-tcp-keepalive/ https://github.com/opennumber/opennumber/blob/bab590c29ab227bbcf1c301cf454c0e668......
  • Vue3中KeepAlive的使用
      我们在开发一个功能是,经常会遇到从一个列表页面,点击列表项跳转到详情页面的需求,理想的情况下,从详情页面返回到列表页,应该回到跳转前的状态,可以继续浏览其他内容;但是在......
  • solrcloud&zookeeper集群搭建
    solrcloud&zookeeper集群搭建zookeeper的配置解压tar–zxvfzookeeper.XXX.tar.gz配置dataDir:zookeeper的管理的节点信息需要记录在该路径下的data目录下默认启动端口218......
  • Hbase报错ERROR: KeeperErrorCode = NoNode for /hbase/master
    场景在上面搭建Hadoop和Hbase的基础上,三台服务器全部重启了。再执行hbase的命令时提示:ERROR:KeeperErrorCode=NoNodefor/hbase/master 注:关注公众号霸道的程序猿获......