首页 > 其他分享 >Codeforces思维训练

Codeforces思维训练

时间:2022-10-10 23:35:07浏览次数:78  
标签:思维 训练 ... int Codeforces 200010 d2 d1

Codeforces思维训练

1721C C. Min-Max Array Transformation

给你一个非减序列 \(a1,a2.a3...a_n\)

和一个非减序列 \(b1,b2,b3...b_n\)

其中 \(b_i=a_i+d_i\),对于每个 \(d_i\) ,求出它的最大值 \(d_1\) 和最小值 \(d_2\)

思路:最小值对应的 \(b_i\) 显然等于 \(lower\)_\(bound\)\((b+1,b+1+n,a_i)\)

因为每一个 \(a_i\) 都可以加一个最小的值变成对应的 \(b_i\) ,从而实现一一对应

最大值对应的 \(b_i\) 是难点所在:

考虑从后往前遍历算 \(d_2\),因为最后一个(即 \(d_2[n]\) )已经确定,它等于 \(n\);

考虑递推:当前已知 \(d_2[i+1]\),要求 \(d_2[i]\)。

当 \(d_1[i+1]>=i+1\)(事实上这里不可能大于) 时,说明 \(i+1\) 后面的元素 \(a_i\) 只能一一分配 \(b_i\) 了。所以此时 \(a_i\) 就不能进来凑热闹了,因为进来会导致后面元素不够分配,

所以 \(d_2[i]=d1[i+1]-1\) 。

当 \(d_1[i+1]<i+1\) 时,\(a_i\) 就可以随便进来凑热闹,所以就是把 \(d_2[i]\) 设置为 \(d_2[i+1]\)。

#include<bits/stdc++.h>
using namespace std;
int a[200010];
int b[200010];
int d1[200010];
int d2[200010];
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		int n;
		cin>>n;
		memset(b,0,sizeof(b));
		for(int i=1;i<=n;i++) cin>>a[i];
		for(int i=1;i<=n;i++) cin>>b[i];
		for(int i=1;i<=n;i++)
		{
			d1[i]=lower_bound(b+1,b+1+n,a[i])-b;
		}
		d2[n]=n;
		for(int i=n-1;i>=1;i--)
		{
			if(d1[i+1]>=i+1) d2[i]=d1[i+1]-1;
			else d2[i]=d2[i+1];
		}
		for(int i=1;i<=n;i++) 
		{
			cout<<b[d1[i]]-a[i]<<' ';
		}
		cout<<endl;
		for(int i=1;i<=n;i++)
		{
			cout<<b[d2[i]]-a[i]<<' ';
		}
		cout<<endl;
	}
}

标签:思维,训练,...,int,Codeforces,200010,d2,d1
From: https://www.cnblogs.com/Jayint/p/16777817.html

相关文章

  • Class 7 视觉AI训练营参营总结与感想
    title:Class7参营总结与感想excerpt:达摩院特别版-视觉AI训练营tags:[阿里云,达摩院,AI,应用,视觉,oss存储,API,车辆部件识别,车辆损伤识别,车险图片......
  • Class 7 ECS 7天实践训练营参营总结与感想
    title:Class7参营总结与感想excerpt:云上实践云上成长ECS7天实践训练营tags:[阿里云,在家学习,进阶班]categories:[学习,阿里云]index_img:https://......
  • 15条科学思维
    1、能区分观点和事实。2、能区分科学和技术。3、知道什么是信源。4、能大致半丁信源的可靠程度。5、习惯用统计的眼光看现象,而不是沉迷于个例。6、能区分因果性和相......
  • 【软件分享】思维导图工具 MyDraw 中文绿色特别版
    思维导图是使用一个中央关键词或想法引起形象化的构造和分类的想法;它用一个中央关键词或想法以辐射线形连接所有的代表字词、想法、任务或其它关联项目的图解方式。它是表达......
  • Codeforces Round #170 (Div. 1) A. Learning Languages(连通块+dfs)
    https://codeforces.com/contest/277/problem/A题目大意:有n个人,有m种语言;这n个人分别会一些(也有可能会0种);问我们他们能否直接或者间接的交流?如果不能的话,一个人去......
  • 【CMAC小脑】CMAC逼近sin(t)函数的训练和测试
    %CMAC逼近sin(t)函数clearall;closeall;clc;t=[0:2*pi/360:2*pi];%自变量ty=sin(t);%因变量ymin_in=min(t);%输入自变量最小值max_in=max(t);%输入自变量最大值n=numel......
  • 学会这种逻辑思维,大厂面试成功率提升90%
    今天将结合实际的例子,和大家一起聊聊怎么在日常工作中践行逻辑思维能力。这里案例来源于一道面试题,其中描述到:有一个自营商品的电商产品,目前计划开发一个促销模块,要支持满赠......
  • CVPR2021深度框架训练 | 不是所有数据增强都可以提升最终精度
    “计算机视觉研究院”计算机视觉研究院专栏作者:Edison_G数据增强(DA)是训练最先进的深度学习系统的必要技术。在今天分享中,实证地表明数据增强可能会引入噪声增强的例子,从而......
  • ICCV 2021:炼丹师的福音,训练更快收敛的绝佳方案(附源代码)
    计算机视觉研究院专栏作者:Edison_G目标检测是现在最热门的研究课题,现在的框架越来越多,但是技术的新颖性到了瓶颈,目前开始流行Transformer机制,而且在目标检测领域也能获得较......
  • 合约安全性思维
    每个以太坊开发者都需要了解的4大安全性原则,以及基本的权衡。 虽然区块链行业正在走向成熟,但智能合约的发展仍是一个相对较新的、有待成熟的领域。因此,随着新的bu......