首页 > 其他分享 >[AGC020D] Min Max Repetition

[AGC020D] Min Max Repetition

时间:2023-12-16 16:12:23浏览次数:29  
标签:.. int Max shengB len read shengA Repetition AGC020D

牛子题

优先满足第二个条件,长度是 \(\lceil \frac{max(A,B)}{min(A,B)+1}\rceil\) ,那么现在要满足字典序最小,发现先填 \(A..ABA..ABA..AB..\) ,中途可能 \(B>>A\) 就填不满 ,就要改变策略,变成 \(B..BAB..BA...\) 这样子的,但是注意可能 \(B\) 有余数,那我肯定优先把有余数个 \(B\) ,这样子肯定字典序小一点,然后二分两种方式的分界点, \(check\) 的话直接判断 \(shengB\times len \leq shengA\) 就行了

关于 \(check\) 的写法,为什么这样是对的?先考虑普通情况,正确性显然,但是如果 \(shengB \times len = shengA\) ,说明没有余数,那就是先填 \(A\) ,那万一之前最后一个也是 \(A\) , 就会寄掉,但是其实我们可以调整一下,把最后的 \(B\) 调整一个过来,把第二段的 \(A\) 给第一段,就是合法的了,本质上是分界点向右移动了,所以对于这种情况要返回 \(true\) 才行,不然答案会错

然后注意二分要像下面的代码那么写才不会错

#include<bits/stdc++.h>
#define il inline 
#define int long long
using namespace std;
il int read(){
	char c;int x=0,f=0;
	while(!isdigit(c=getchar()))f|=(c=='-');
	while(isdigit(c))x=(x*10)+(c^48),c=getchar();
	return f?-x:x;
}
int A,B,C,D,len;
il bool check(int fjd){
	int shengA=A-fjd/(len+1)*len-fjd%(len+1),shengB=B-fjd/(len+1);
	return shengA*len>=shengB;
}
signed main(){
	int t=read();
	while(t--){
		A=read(),B=read(),C=read(),D=read();
		len=ceil(max(A,B)*1.0/(min(A,B)+1));
		int lt=0,rt=A+B+1,pos=0;
		while(lt<rt){	
			int mid=(lt+rt)>>1;
			if(check(mid))lt=mid+1;
			else rt=mid;
		}
		pos=lt;
		int shengA=A-pos/(len+1)*len-pos%(len+1),shengB=B-pos/(len+1);
		int fstA=shengB-shengA*len+pos+1;
		for(int i=C;i<=D;i++){
			if(i<=pos){
				if(i%(len+1))putchar('A');
				else putchar('B');
			}
			else if(i>pos&&i<fstA)putchar('B');
			else if(i>=fstA){
				if((i-fstA+1)%(len+1)==1)putchar('A');
				else putchar('B');
			}
		}
		puts("");
	}
	return 0;
}

标签:..,int,Max,shengB,len,read,shengA,Repetition,AGC020D
From: https://www.cnblogs.com/blueparrot/p/17904943.html

相关文章

  • 机器学习-线性回归-softmax回归 做多分类-10
    1.softmax回归伯努利分布(0-1分布二分类),我们采用Logistic回归(用sigmoid函数映射到0-1之间输出预测概率)建模。那么我们应该如何处理多分类问题?(比如要进行邮件分类;预测病情属于哪一类等等)。对于这种多项式分布我们使用softmax回归建模。什么是多项分布?多项式分布的目标值yε{......
  • CF 1904 D. Set To Max
    EasyVersionHardVersionHardVersion的做法可以从EasyVersion用数据结构优化得到。首先我们想一下,什么情况需要进行操作?显然是\(a_i!=b_i\)的时候,并且当\(a_i>b_i\)的时候将会无解。那么当\(a_i<b_i\)的时候,应该怎么办呢,显然应该寻找左边和右边最近的\(j\),.满足\(a_j=b_i......
  • 一招MAX降低10倍,现在它是我的了
    一.背景性能优化是一场永无止境的旅程。到家门店系统,作为到家核心基础服务之一,门店C端接口有着调用量高,性能要求高的特点。C端服务经过演进,核心接口先查询本地缓存,如果本地缓存没有命中,再查询Redis。本地缓存命中率99%,服务性能比较平稳。随着门店数据越来越多,本地缓存容量逐......
  • 无涯教程-Java - max()函数
    此方法给出两个参数中的最大值。参数可以是int,float,long,double。max()-语法此方法具有以下变体-doublemax(doublearg1,doublearg2)floatmax(floatarg1,floatarg2)intmax(intarg1,intarg2)longmax(longarg1,longarg2)max()-返回值此方法返回两个参数......
  • [论文阅读] Replacing softmax with ReLU in Vision Transformers
    Pretitle:ReplacingsoftmaxwithReLUinVisionTransformersaccepted:Arxiv2023paper:https://export.arxiv.org/abs/2309.08586code:None关键词:attention,parallelization阅读理由:GoogleDeepmind,标题挺有意思Idea序列缩放能缓解ReLU等激活函数在attention中替......
  • 蛋白质组搜库软件MaxQuant使用教程
    目录MaxQuant基本原理MaxQuant使用MaxQuant实操MaxQuant基本原理MaxQuant使用MaxQuant实操更多信息请关注:......
  • Redis报错:WARNING: The TCP backlog setting of 511 cannot be enforced because /pro
    报错内容:1:C08Dec202305:47:33.348#oO0OoO0OoO0OoRedisisstartingoO0OoO0OoO0Oo1:C08Dec202305:47:33.348#Redisversion=7.0.5,bits=64,commit=00000000,modified=0,pid=1,juststarted1:C08Dec202305:47:33.348#Configurationloaded1:M08De......
  • MySQL服务器8核32G max_connections设置为10000的情况,springboot里面的Druid参数配置
    MySQL服务器8核32Gmax_connections设置为10000的情况,springboot里面的Druid参数配置多少合适啊,MySQL服务器8核32G,max_connections设置为10000,确实是相当大的一个配置啊。对于Druid的参数配置,得看你系统的具体情况。一般来说,你可以考虑以下几个参数:initialSize:连接池的初始大小,你......
  • 效率MAX!15款最佳协同设计软件推荐
    在当今的数字化时代,协同设计软件已经成为许多设计团队不可或缺的工具。这些软件(或平台)不仅为设计师们提供了协同共创的可能性,还能促进他们的交流和共享。无论是大型企业还是个人设计师,协同设计软件都能够极大地提升工作效率,并在潜移默化中优化设计流程。在本文中,我们将介绍15款备受......
  • maxWait: 600000是什么意思
    maxWait:600000是指在使用连接池管理数据库连接时,最大等待时间的设置。连接池是一种用于管理和复用数据库连接的技术,它可以提高应用程序对数据库的性能和并发处理能力。当应用程序需要获取一个数据库连接时,如果连接池中的连接已经全部被占用,那么应用程序就需要等待其他连接释放后......