zoukankan      html  css  js  c++  java
  • hdu 1270 小希的数表

    题目

    思路:

    设所求的n个数按从小到大排列为a1,a2....an。
     a1+a2一定是n*(n-1)/2个数的序列中最小的,a1+a3一定是次小的,通过枚举a2+a3的值解出符合条件的a1,a2,a3,
     把他们两两相加的结果从n*(n-1)/2个数中排除。

    然后n*(n-1)/2个数中剩下的第一个没有被排除的数一定是a1+a4的值,这样可以求的a4,再从n*(n-1)/2个数中除去a1+a4,a2+a4,a3+a4。

    然后n*(n-1)/2个数中剩下的第一个没有被排除的数一定是a1+a5的值,这样可以求的a5……

    如此重复,直到求的an的值,并除去a1+an,a2+an,....an-1+an,此时如果n*(n-1)/2个数已经全部除去,那么就得到了答案,否则,说明枚举的a2+a3的值仍不合要求,继续枚举下一个a2+a3的值

    #include<stdio.h>
    #include<string.h>
    int n,b[4951],a[4951],has[10000],n2;
        int i,flag,k,j,z;
    int main()
    {
        while(scanf("%d",&n)&&n)
        {
            n2=n*(n-1)/2;
            for( i=1;i<=n2;i++)
                scanf("%d",&a[i]);
    
            for(i=1;i<(a[1]+1)/2;i++)
            {
                memset(has,0,sizeof(has));
                for( j=1;j<=n2;j++)
                    has[a[j]]++;
                k=0;
                for(j=1;j<=n2;j++)
                {
                    flag=0;
                    if(has[a[j]]<=0) continue;
                    b[++k]=a[j]-i;
                    for(z=1;z<k;z++)
                    {
                        if(has[b[z]+b[k]]<=0) {
                            k--;
                            flag=1;
                            break;
                        }
                    }
                    if(!flag) {
                        for(z=1;z<k;z++)
                            has[b[z]+b[k]]--;
                    }
                }
                if(k==n-1)
                {
                    printf("%d",i);
                    for(j=1;j<=k;j++)
                        printf(" %d",b[j]);
                    printf("
    ");
                    break;
                }
            }
        }
        return 0;
    }
    


    写这道题用了我大半天的时间,其中主要的心路历程便是:开始,各种看博客把别人的代码弄懂,然后就是各种查错。因为我提交的代码老是有问题,不是说我答案错误,就是运行错误。。。

    搞了半天终于AC了也算没有白忙。

  • 相关阅读:
    Css预编语言以及区别
    CSS完成视差滚动效果
    理解ASP.NET Core验证模型 Claim, ClaimsIdentity, ClaimsPrincipal
    EF Expression 扩展
    总结 jion,group join 基于方法的查询与查询表达式 对比
    EF 查询表达式 join
    EF中 GroupJoin 与 Join
    css中“~”和“>”是什么意思
    jquery基于form-data文件上传
    针对 easyui boolean 布尔值 的处理
  • 原文地址:https://www.cnblogs.com/qie-wei/p/10160267.html
Copyright © 2011-2022 走看看