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了也算没有白忙。

  • 相关阅读:
    3D 服务器端以向量计算为主的角色位置的算法
    宇宙中可见物质为 4%,暗物质和暗能量占 96% 是怎么算出来的?
    量子纠缠
    “人的第一感觉(直觉)其实非常准”
    有哪些看似荒谬,其实很科学的理论@知乎、@量子力学
    CPU/寄存器/内存
    原子操作
    简单的介绍下WPF中的MVVM框架
    IOS开发中,TextField和TextView有何区别
    年后小结
  • 原文地址:https://www.cnblogs.com/qie-wei/p/10160267.html
Copyright © 2011-2022 走看看