题解 | #神奇天平#

神奇天平

https://ac.nowcoder.com/acm/problem/229080

分析

首先考虑 m=2m=2 是平凡的情况。

每次物品分成 m+1=3m+1=3 堆,最劣状态时一定有:每次目标物品出在最大的一堆,所以平均分,并上取整。

所以 nn 下降的方式即为

nm+1m+1m+1m+1\left\lceil\dfrac{\left\lceil\dfrac{\left\lceil\dfrac{\left\lceil\dfrac{n}{m+1}\right\rceil}{m+1}\right\rceil}{m+1}\right\rceil}{m+1}\right\rceil\cdots

据此不难得到最终的代码思路:每次除以 m+1m+1 上取整即可,并用计数器统计一下分了几次物品,如果某次小于 m+1m+1 份就代表一定可以一次找到目标物品。

代码

#include<cstdio>
int init(){
	char c = getchar();
	int x = 0, f = 1;
	for (; c < '0' || c > '9'; c = getchar())
		if (c == '-') f = -1;
	for (; c >= '0' && c <= '9'; c = getchar())
		x = (x << 1) + (x << 3) + (c ^ 48);
	return x * f;
}
void print(int x){
	if (x < 0) x = -x, putchar('-');
	if (x > 9) print(x / 10);
	putchar(x % 10 + '0');
}
int ceil(int n, int m){
	return (n + m - 1) / m;
}
int main(){
	int T = init();
	while (T--) {
		int n = init(), m = init() + 1, ans = 0;
		while (n > m)
			++ans, n = ceil(n, m);
		print(ans + 1), putchar('\n');
	}
}

整活

一种东西,有若干堆;
一堆东西,有若干样;
一样东西,有若干件;
一件东西,有若干个。

希望以后牛客比赛对题面含义清晰做出更高要求。

全部评论

相关推荐

06-12 10:50
门头沟学院 Java
你的不定积分没加C:我怎么在学院群看到了同样的话
点赞 评论 收藏
分享
06-27 12:30
延安大学 C++
实习+外包,这两个公司底层融为一体了,如何评价呢?
一表renzha:之前面了一家外包的大模型,基本上都能答出来,那面试官感觉还没我懂,然后把我挂了,我都还没嫌弃他是外包,他把我挂了……
第一份工作能做外包吗?
点赞 评论 收藏
分享
评论
5
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务