jzoj7208数学「ROIR 2018 Day2」书页

Posted SSL_ZZL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jzoj7208数学「ROIR 2018 Day2」书页相关的知识,希望对你有一定的参考价值。

题面

Description

在这里插入图片描述

Input

在这里插入图片描述

Output

在这里插入图片描述

Sample Input

1
8

Sample Output

3

Data Constraint

在这里插入图片描述

Hint

在这里插入图片描述


解题思路

选出 num 个数加起来等于 s ,每个数互不相同且最小的数要大于 k ,使这 num 个数之间的差最小
既然差要最小,那么这几个数值大小一定要平均(1,2,3,4,5…肯定最平均)
那就先暴力,求出最平均时的和sum
在这里插入图片描述

2,3,4 =》 这是最平均能求到的
那么剩下的5呢??尽量平摊到每个数上
在这里插入图片描述
如果除不尽,有余呢??从最后一个数往前平摊(这样数字才是升序)
在这里插入图片描述
那么现在考虑求答案

  • 在一开始暴力时,答案为k(因为最平均,之间无插图页)
  • 每次可以平摊到每个数上时,答案为k+sum(每个数之间的差还是不会变,但第一个数变大,前面的插图页就会变多)
  • 有余的情况,答案为k + sum + 1(最后平摊到的区间 [l, num] ,只有 l 和 l - 1 位上的数之间的差变大1)

Code

#include <iostream>
#include <cstdio>
#define ll long long

using namespace std;

int k, num;
ll s, sum, ans;

int main() {
	scanf("%d %lld", &k, &s);
	ans = k;  //暴力块:初始答案为k
	for(int i = k + 1; sum + i <= s; i++)  
		num++, sum += i;
	ans += (s - sum) / num;  //平摊块
	if((s - sum) % num) ans++;  //有余平摊块
	printf("%lld", ans);
}

以上是关于jzoj7208数学「ROIR 2018 Day2」书页的主要内容,如果未能解决你的问题,请参考以下文章

Jzoj 4253五校联考7day2TarjanDP并查集QYQ在艾泽拉斯

[JZOJ6345]:ZYB建围墙(数学+构造)

Jzoj 4257组合数学着色

[数学]JZOJ 4673 LCS again

FCS NOI2018福建省冬摸鱼笔记 day2

[数学][dp] Jzoj P4236 登山