吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 845|回复: 11
收起左侧

[求助] 求助一道算法题 40CB

[复制链接]
980041382 发表于 2022-3-27 22:22
题目大意是:
初始给一根长度为n的棍子,每秒所有棍子长度+1,然后会选最长的长度的是偶数的一根棍子折成两半,求k秒后最长的棍子长度。0秒的时候会先折一次。

测试用例1:
输入:
1 1
输出:
1

测试用例2:
输入:
4 0
输出:
2

测试用例3:
输入:
1 6
输出:
4

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

小懒虫丶 发表于 2022-3-27 22:32
毫不夸张的说,没读懂题.............
Vardven 发表于 2022-3-27 22:35
这个是应该用方程式吗,我好像会,但是懒得算怎么办!
 楼主| 980041382 发表于 2022-3-27 22:43
小懒虫丶 发表于 2022-3-27 22:32
毫不夸张的说,没读懂题.............

就是有一根魔法棒 每秒钟都会增加一个单位长度 然后魔法棒还可以被分成两半 这两半也有上面的两个性质
 楼主| 980041382 发表于 2022-3-27 22:44
Vardven 发表于 2022-3-27 22:35
这个是应该用方程式吗,我好像会,但是懒得算怎么办!

不是啊 是一道算法题
3630 发表于 2022-3-27 23:33
[Python] 纯文本查看 复制代码
n, k = [int(i) for i in input().split()]
if n % 2 == 0:
    li = [n / 2, n / 2]
else:
    li = [n]
for i in range(k):
    li = [i+1 for i in li]
    ma = -1
    for i in li:
        if i % 2 == 0:
            ma = max(ma, i)
    if ma != -1:
        li.remove(ma)
        li.append(ma / 2)
        li.append(ma / 2)

print(int(max(li)))

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
980041382 + 2 + 1 热心回复!

查看全部评分

3630 发表于 2022-3-28 00:28
[C++] 纯文本查看 复制代码
#include <bits/stdc++.h> 
using namespace std;
typedef long long ll;

int main() {
	ll n, k, max, index;
	vector<ll> arr;
	scanf("%lld%lld", &n, &k);
	if (n & 1) arr.push_back(n);
	else {
		arr.push_back(n / 2);
		arr.push_back(n / 2);
	}

	for (ll i=0; i<k; ++i) {
		for (ll j=0; j<arr.size(); ++j) ++arr[j];
		max = -1; index = -1;
		for (ll j=0; j<arr.size(); ++j) {
			if (!(arr[j] & 1) && (arr[j] > max)) {
				index = j;
				max = arr[index];
			}
		}
		if (index != -1) {
			arr[index] /= 2;
			arr.push_back(arr[index]);
		} 
	}

	max = -1;
	for (ll i=0; i<arr.size(); ++i) {
		if (arr[i] > max) max = arr[i];
	}
	printf("%lld\n", max);
}

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
980041382 + 2 + 1 热心回复!

查看全部评分

 楼主| 980041382 发表于 2022-3-28 00:32
3630 发表于 2022-3-28 00:28
[mw_shl_code=cpp,true]#include  
using namespace std;
typedef long long ll;

老哥能说一下解题思路吗 。。。然后我另外一个帖子的40CB给您
侃遍天下无二人 发表于 2022-3-28 08:35
一根棍子折完之后就变成两根了吗,模拟算法还是很简单的,但我想不到数学算法应该是啥样的
 楼主| 980041382 发表于 2022-3-28 09:39
侃遍天下无二人 发表于 2022-3-28 08:35
一根棍子折完之后就变成两根了吗,模拟算法还是很简单的,但我想不到数学算法应该是啥样的

我只能想到用暴力
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 14:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表