【构造】AtCoder Regular Contest 079 D

从n个t变化到n个t-1,恰好要n步,并且其中每一步的max值都>=t,所以把50个49当成最终局面,从这里开始,根据输入的K计算初始局面即可。

#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
ll K;
int main(){
	cin>>K;
	int n=50;
	printf("%d
",n);
	ll a=K/(ll)n; ll b=K%(ll)n;
	int cnt=0;
	for(int i=1;i<=(int)b;++i){
		++cnt;
		cout<<49ll+a+((ll)n-(b-1ll))<<(cnt==n ? '
' : ' ');
	}
	for(int i=1;i<=n-(int)b;++i){
		++cnt;
		cout<<49ll+a-b<<(cnt==n ? '
' : ' ');
	}
	return 0;
}
原文地址:https://www.cnblogs.com/autsky-jadek/p/7257805.html