您当前的位置: 首页 > 

*DDL_GzmBlog

暂无认证

  • 1浏览

    0关注

    605博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

[cf] Codeforces Round #791 (Div. 2)

*DDL_GzmBlog 发布时间:2022-05-15 13:43:28 ,浏览量:1

前言

传送门 :

A - AvtoBus

题意 : 给定一个数 n n n,询问 a ∗ 4 + b ∗ 6 = n a*4+b*6=n a∗4+b∗6=n其中 a + b a+b a+b的最大最小值

思路 :

a ∗ 4 + b ∗ 6 = n 6 ∗ ( a + b ) = ( n + 2 ∗ a ) ( a + b ) = n + 2 ∗ a 6           同 理 可 得 ( a + b ) = n − 2 ∗ b 4 \begin{aligned} & a*4+b*6=n\\ & 6*(a+b)=(n+2*a)\\ & (a+b)=\frac{n+2*a}{6}\\ & \ \ \ \ \ \ \ \ \ 同理可得\\ &(a+b)=\frac{n-2*b}{4} \end{aligned} ​a∗4+b∗6=n6∗(a+b)=(n+2∗a)(a+b)=6n+2∗a​         同理可得(a+b)=4n−2∗b​​

因此我们可以得知

  • n n n是奇数的时候无解
  • 特判 n = 2 n=2 n=2

显然的最小值就是 n + 2 ∗ a = = n n+2*a==n n+2∗a==n的时候,当然需要判断是否能够整除

最大值就是 n − 2 ∗ b = = n n-2*b==n n−2∗b==n的时候,因为除法本身就有向下取整,因此无需特判

code :

void solve(){
	ll n;cin>>n;
	if(n%2 || n == 2){
		cout>x;
			total = x*n;
			pre = x;
			mp.clear();
			
		}
		cout>op;
		if(op == 1){
			int x,y;cin>>x>>y;
			if(stx[x] == 0) add(Tx,x,1);
			if(sty[y] == 0) add(Ty,y,1);
			
			stx[x]++;
			sty[y]++;
		}else if(op == 2){
			int x,y;cin>>x>>y;
			
			stx[x] -- ;
			sty[y] -- ;
			if(stx[x] == 0)add(Tx,x,-1);
			if(sty[y] == 0)add(Ty,y,-1);
		}else {
			int x1,y1,x2,y2;
			cin>>x1>>y1>>x2>>y2;
			
			int totalx = query(Tx,x2) - query(Tx,x1-1);
			int totaly = query(Ty,y2) - query(Ty,y1-1);
			if(totalx >= x2 - x1+1) cout            
关注
打赏
1657615554
查看更多评论
0.0440s