先贪心全填 ,
减去
,
减去
,如果
是奇数,那么
值的上限加
(这个
可以分配给第二个怪物血量)。
接着贪心将剩余血量分配给前两个怪物,第一个怪物血量加 ,其余的给第二个怪物。
最短代码,实现:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a,k;
cin>>n>>a>>k;
a-=n,k-=n+1>>1;
if(a<k||k+k<a-(n&1)) cout<<-1;
else for(int i=1,w;i<=n;++i)
w=min(a,k+(i==2)),cout<<w+1<<' ',a-=w;
}

京公网安备 11010502036488号