标签:++ names include 设置 cin efi def 构造 space
一开始将数列设置为0 1 2 3 4 5 6.。。
然后从左到右遍历,每位不够就增加即可
#include<bits/stdc++.h> using namespace std; #define maxn 200005 #define ll long long ll a[maxn],n,k; int main(){ cin>>n>>k; ll sum=(0+k-1)*k/2; if(sum>n){ puts("NO"); return 0; } a[0]=-1; for(int i=1;i<=k;i++){ int now=a[i-1]+1; int add=(n-sum)/(k-i+1); if(now+add>2*a[i-1] && i>=2) add=2*a[i-1]-now; sum+=add*(k-i+1); a[i]=now+add; if(i>=2 && a[i]>2*a[i-1] || sum>n){ puts("NO"); return 0; } } if(sum!=n){ puts("NO"); return 0; } puts("YES"); for(int i=1;i<=k;i++) cout<<a[i]<<" "; }
标签:++ names include 设置 cin efi def 构造 space
原文地址:https://www.cnblogs.com/zsben991126/p/11002143.html