首页 > 其他分享 >Codeforces Round 890 (Div. 2) supported by Constructor Institute ————C - To Become Max

Codeforces Round 890 (Div. 2) supported by Constructor Institute ————C - To Become Max

时间:2023-08-06 14:56:32浏览次数:57  
标签:890 supported Institute Max 位置 Codeforces int ans Become

关于这场div2,只能说一言难尽

C题可以二分的,赛时看到n<=1000,直接往\(O(n^2)\)考虑 ,想了一会贪心的话能写出来,但是,细节太多没调出来,G掉打分。
\(O(n^2)\)做法:
思路:每次让i为起点,往前贪心枚举,并且当前位置如果满足,也要枚举当前区间,细节就是要注意上下限,赛时,漏了一种上界小于下届的情况,所以一直wa。
代码:

点击查看代码
#include<bits/stdc++.h>
#define int long long 
using namespace std;
const int N=1e6+7; 
int mod=1e9+7;
int a[N];
int n,k;
void solve()
{
	cin>>n>>k;
	int x;
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		ans=max(ans,a[i]);
	}
	a[n+1]=a[n]-1; //这里多加个,让最后两位也计算
	n++;
	for(int i=2;i<n;i++)
	{
		int x=a[i],xx=a[i+1]+1; //起点的下上限 
		xx=max(xx,x); //注意这里要保证xx>=x
		int w=a[i]; //表示上一位的值
		int sss=a[i]; //j+1 位置的值
		int p=0;  //j+1位置达到sss所花费的值
		for(int j=i-1;j>=1;j--) //二层循环,每次只看当前位置
		{
			w=max(w+1,a[j]+1);//当前位置的最大值
			if(w-(i-j)<=xx) //如果最值大于上限,break
			{
				int cc=p+w-a[j]+(i-j)*(w-1-sss); //当前位置达到最值的花费,
				sss=w; //记录当前位置,最值,方便下次用
				p=cc; //记录当前花费,方便下次累加
				if(cc<=k)//当前位置达到最值时,花费是否满足
				{
					ans=max(ans,w); //更新答案
					int kk=k-cc; 
					ans=max(ans,min(xx+i-j,w+kk/(i-j+1))); //剩余操作次数,对区间整体操作,注意小于上界
				}
				else break;
			}
			else break;
		}
	} 
	cout<<ans<<'\n';
}
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	int t=1;
	cin>>t; 
	while(t--)
	{
		solve();
	}
	return 0;
} 

二分做法时间复杂度大概\(O(n^2log(MAX))\),就不多说了,

标签:890,supported,Institute,Max,位置,Codeforces,int,ans,Become
From: https://www.cnblogs.com/xxj112/p/17609408.html

相关文章

  • Codeforces Round 890 (Div. 2) supported by Constructor Institute 题解
    A.TalesofaSort关键就是找逆序对记一组逆序对下标为\(l,r\),则求出最大的\(a_l\)即可B.GoodArrays记要构造的GoodArray为\(b\)前置:\(\forall1\lei\len,b_i=1\)然后\(O(n)\)扫一遍看一下有没有重复,有重复就\(b_i\leftarrowb_i+1\)扫完之后,记\(sum=\sum_......
  • msm8909_wk2124_SPI转串口485
    项目使用的是高通的msm8909平台,采用广和通SC806开发板,开发环境采用Ubuntu18.04。SC806默认有两路串口,对项目来说不够使用,需要进行转接,所以采用了wk2124将一路SPI转换为4路串口,然后再加485芯片,转换为4路485接口。接下来详细看看整个配置过程。概述说明:本文档会将为开提供的官方文......
  • 论文解读(MCD)《Maximum Classifier Discrepancy for Unsupervised Domain Adaptation》
    Note:[wechat:Y466551|付费咨询,非诚勿扰]论文信息论文标题:MaximumClassifierDiscrepancyforUnsupervisedDomainAdaptation论文作者:KuniakiSaito,KoheiWatanabe,Y.Ushiku,T.Harada论文来源:2018CVPR论文地址:download论文代码:download视屏讲解:click1介绍 ......
  • 漏洞复现报告:CVE-2019-2890 反序列化漏洞
    OracleWebLogicServer漏洞研究报告一、漏洞信息搜集1.1漏洞信息表漏洞名称OracleWebLogicServer反序列化漏洞发布时间2019年10月16日漏洞编号CVE-2019-2890威胁类型反序列化漏洞危害级别高危影响版本OracleWebLogicServer10.3.6.0.0、12.1.3.0.0、12.2.1.3.0、12.2.1.4.0......
  • msm8909_Setting中添加永不休眠功能
    项目中需要让Android板开机就进入桌面并且永不休眠。项目使用的是广和通的SC806Android开发板,msm8909平台。配置永不休眠diffdiff文件放前面,可以直接apply进去!diff--gita/frameworks/base/packages/SettingsProvider/res/values/defaults.xmlb/frameworks/base/packages/Se......
  • msm8909_MIPI转HDMI调试记录
    项目中需要把开发板的MIPI输出信号转换为HDMI和LVDS输出,使用龙迅的LT8912B进行转换。龙迅的FAE提供的资料相对来说还是比较少的。先简单的看一下吧:厂商资料寄存器配置该文件提供了对LT8912B初始化的寄存器配置。对于我们来说需要做的就是,写一个驱动,在开机的时候调用相关的函数,......
  • 特征学习——特征工程自动化,无非类似CNN最后一层softmax前的输出层就是特征表征层,但那
    通过representationlearning,我们可以把一些抽象的知识转化为具体的数值的形式,例如我们使用word2vec对“上下文”的模糊的概念进行了具象的表达,生成的wordvector包含了这种先验知识(具体的表现形式就是常出现在上下文里的单词其向量的距离很接近,实际上理解word2vec是基于embedding......
  • 建模教程:如何利用3ds Max 和 After Effects 实现多通道渲染和后期合成 - 第 1 部分
     推荐:NSDT场景编辑器助你快速搭建可二次开发的3D应用场景1.创建基本场景步骤1打开 3dsMax。在透视视口。打开3dsMax步骤2做一个茶壶,放在飞机上。制作茶壶步骤3我在场景中应用了几个灯光。我选择了光线追踪阴影作为阴影。光线追踪阴影步骤4按 M 打开材质......
  • 建模教程:如何利用3ds Max 和 After Effects 实现多通道渲染和后期合成 - 第 2 部分
     推荐:NSDT场景编辑器助你快速搭建可二次开发的3D应用场景1.创建基本场景步骤1打开 3dsMax。打开3dsMax。步骤2我做了一个简单的场景。我放了三个彼此之间有一定距离的物体。制作对象步骤3按 Ctrl-C 键在透视视图中创建摄影机。创建相机2.设置对象ID步......
  • pytorch-tensor属性统计(norm,max,min...)
    statistics▪norm(范数)▪mean,sum(平均值,求和)▪prod(累乘)▪max,min,argmin,argmax▪kthvalue,topk(第k大)norm(范式)这里面有一范式和二范式。一范式:\[||x||_1=\sum_k|x_k|\]二范式:\[||x||_1=\sqrt{\sum_k{x_k^2}}\]a.norm(k,dim)这个dim,可以不填,不填就是......