Codeforces Round 935 (Div. 3) A - E 题解

A. Setting up Camp

题意:给你a,b,c,a表示独居的人的个数,b表示可以同居的人的个数,但是必须要一屋子三个人,c表示可以两个人一起住也可以三个人一起住的人数,问最少需要几间屋子?
题解:先看a,a有多少人就需要多少间屋子,再看b,如果c的人数无法和b凑成3的倍数,那么一定是无解,其他的情况就是让c和b凑出最大的3的倍数,剩下的c最多组成一个屋子,得解。
代码:
#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
const int maxn = 1e6 + 7 ;
const int mod = 998244353 ;
inline ll read() {
	ll x = 0, f = 1 ;
	char c = getchar() ;
	while (c > '9' || c < '0') {
		if (c == '-')
			f = -1 ;
		c = getchar() ;
	}
	while (c >= '0' && c <= '9') {
		x = x * 10 + c - '0' ;
		c = getchar() ;
	}
	return x * f ;
}

bool vis[maxn] ;
ll t , n , d , k , a[maxn] , b[maxn] , sum[maxn] , Sum[maxn] ;
void solve(){
	n = read() ;
	d = read() ;
	k = read() ;
	ll ans = n ;
	ll res = (d + 3 - 1) / 3 ;
	res = res * 3 ;
	res = res - d ;
	if(k >= res){
		ll Ans = (k + d) / 3 ;
		Ans = Ans * 3 - d ;
//		cout << Ans << endl ;
		cout << ans + ((k + d) / 3ll) + ((k - Ans) > 0 ? 1 : 0) << endl ;
		return ;
	}
	else{
		cout << -1 << endl ;
	}
}
int main(){
	t = read() ;
	while(t --){
		solve() ;
	}
	return 0 ;
}

B. Fireworks

题意:给你a , b , c ,一共有两种烟花,第一种每隔a分钟发射一次,第二种每隔b分钟发射一次,问找到一个区间满足x<=i <= x + c,问找到一个区间能同时看到最多的烟花数量是多少?
题解:很明显,从lcm(a , b)开始,然后再看c分钟能放多少个烟花即可,答案就是2 + (c / a) + (c / b)
代码:
#include<bits/stdc++.h>
usin
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小许愿瓶

我的成长我做主

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值