UESTC 759 倒推数组 新手题

ProLightsfx 2015-11-2 136 11/2

倒推数组 新手题

My Solution

为了字典序最小,前面保持1、2、3、4、5、6……n-1,只相应的变化a[n-1]的值
#include 
#include 
using namespace std;
const int maxn=128;
int ans[maxn],fmin=0;//fmin记得要初始化的

void firstans(const int &n)
{
    for(int i=1;i<=n;i++){
        ans[i]=i;
    }
}
//F=(n+n-1)a1+(n-1+n-2)a2······2a(n-1)+an;  故要字典序最小,只要改变最后一项就好了,而且刚好最后一项系数为1,
//这里就这么搞算数了
void sum(const int &n)
{
    for (int i = 1; i <= n; ++i){
        for ( int j = 1; j <= n ; ++j)
            fmin = fmin + min (ans[i], ans[j]);
    }
}
int main()
{
    int n,F,T,err=-1;
    scanf("%d",&T);
    while(T--){
        fmin=0;  //记得重置
        scanf("%d%d",&n,&F);
        firstans(n);
        sum(n);
        if(F<fmin) {printf("%dn",err);continue;}
        else {
            ans[n]=n+F-fmin;
            for(int i=1;i<n;i++)
                printf("%d ",ans[i]);
            printf("%dn",ans[n]);//最后一个后面不能有空格而是直接换行
        }
    }
    return 0;
}


非特殊说明,本站所有文章均为博主原创,未经许可不得转载。

https://www.prolightsfxjh.com/

Thank you!

                                                                                                                                             ------from ProLightsfx

- THE END -

ProLightsfx

11月16日09:06

最后修改:2024年11月16日
0

非特殊说明,本博所有文章均为博主原创,未经许可不得转载。

共有 0 条评论