瓜瓜轰炸机---------卡了long long, 但是对二维图的理解加深了,可以把坐标之和看成是奇数和偶数,这样就可解决,任意方向问题了

这是一个关于算法的编程题,题目要求计算在n×m的网格中,每个格子有血量为k的敌人,最少需要进行多少次轰炸才能消灭所有敌人。敌人在受到伤害后会随机逃到相邻的格子。解决方案涉及到数学和概率的计算,对于不同情况有不同的策略。示例代码给出了针对不同情况的轰炸次数计算方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

有一个 n×mn \times mn×m 的网格,每个格子上站着一个血量为 kkk 的敌人。瓜瓜每次可以选择一个格子进行轰炸。

轰炸过后该格子上的所有敌人都会发生如下变化

  • 如果受到伤害的敌人血量为 111,那么他会战死;
  • 如果受到伤害的敌人血量大于 111,那么他会失去一点血量值,并随机的跑到一个相邻的网格(仅上下左右);

瓜瓜想节省自己的弹药,请你帮他计算至少需要进行多少次轰炸,可以保证消灭所有敌人(无论敌人朝哪个方向逃跑)。

输入描述:

第一行有一个正整数 TTT, 表示有 T(1⩽t⩽104)T(1 \leqslant t \leqslant 10^ 4)T(1⩽t⩽104) 组样例。

每组样例,每行有三个正整数 n,m,kn, m, kn,m,k,其中 1⩽n,m⩽104,1⩽k⩽1081 \leqslant n, m \leqslant 10^ 4, 1 \leqslant k \leqslant 10^81⩽n,m⩽104,1⩽k⩽108

输出描述:

输出 TTT 行, 每行输出一个整数表示答案

示例1

输入

复制2 1 3 1 1 3 2

2
1 3 1
1 3 2

输出

复制3 4

3
4

说明

对于第一组样例,有相邻的三个格子,格子上有一个一滴血的敌人,轰炸三次即可

对于第二组样例,有相邻的三个格子,我们选择依次轰炸:中间的格子,两侧的格子各一次,中间的格子。这样可以保证消灭所有敌人。
#include <bits/stdc++.h>
#define int long long
using namespace std;
int T;
int n, m, k;

signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	cin >> T;
	while (T--)
	{
		cin >> n >> m >> k;
		if (n == 1 && m == 1)
			cout << k << endl;
		else if (n * m % 2 == 0)
		{
			cout << n * m / 2 + (n * m / 2) * k << endl;
		}
		else 
		{
			if (k % 2 == 0)
			{
				int temp1 = n * m / 2 + 1 + (n * m / 2) * (k / 2) + (n * m / 2 + 1) * (k / 2);
				int temp2 = n * m / 2 + (n * m / 2 + 1) * (k / 2) + (n * m / 2) * (k / 2);
				int ans = min(temp1, temp2);
				cout << ans << endl;
			}
			else
			{
				int temp1 = n * m / 2 + 1 + (n * m / 2) * (k / 2 + 1) + (n * m / 2 + 1) * (k / 2);
				int temp2 = n * m / 2 + (n * m / 2 + 1) * (k / 2 + 1) + (n * m / 2) * (k / 2);
				int ans = min(temp1, temp2);
				cout << ans << endl;
			}
		}
	}
		
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值