您的位置:68399皇家赌场 > 域名注册 > 68399皇家赌场:一道算法题,看看大家的思路

68399皇家赌场:一道算法题,看看大家的思路

发布时间:2020-03-12 01:31编辑:域名注册浏览(89)

    有N个数,从N个数里取M个数,使得抽取的M(1=M=N卡塔尔国个数和为SUM,并出口对应的索引如N=拾陆个数8,9,3,1,6,18,5,3,15,99,9,18,1000,15,500SUM=15这时候出口M=18,13M=21-4,4-10M=30-3-4有何人风野趣完成这几个效能,用C语言,不包罗容器的函数.

      给N个互不相符的数字,要组成M(M<=N*(N 1卡塔尔国/2卡塔尔国种差别的SUM,供给输出每一种组成的方法.

      繁殖性:生物S1(N1,M1)和生物S2(N2,M2)养殖的后裔为生物S3(N1,M2)和生物S4(N2,M1)

    Problem Description

    给出N,M
    施行如下程序:
    long long  ans = 0,ansx = 0,ansy = 0;
    for(int i = 1; i <= N; i )
       for(int j = 1; j <= M; j )
           if(gcd(i,j) == 1) ans ,ansx = i,ansy = j;
    cout << ans << " " << ansx << " " << ansy << endl;

    #include<stdio.h>
    #include<stdlib.h>
    
    int va[60];
    
    int cmp(const void *a,const void *b)
    {
        return *(int *)a-*(int *)b;
    }
    
    int main()
    {
        int n,k,i,j,ll;
        while(scanf("%d%d",&n,&k)!=EOF)
        {
            for(i=1;i<=n;i  )
            {
                scanf("%d",&va[i]);
            }
            qsort(va 1,n,sizeof(va[0]),cmp);
            for(i=0;i<n;i  )
            {
                if(k==0)break;
                for(j=1;j i<=n;j  )
                {
                    if(k==0)break;
                    printf("%d",i 1);
                    for(ll=n;ll>n-i;ll--)
                    {
                        printf(" %d",va[ll]);
                    }
                    printf(" %dn",va[j]);
                    k--;
                }
            }
        }
        return 0;
    }
    

     

    Output

    如题所陈诉,每行输出3个数,ans,ansx,ansy,空格隔绝

    68399皇家赌场 168399皇家赌场 2View Code

    68399皇家赌场, 

    Sample Input

    5 5
    1 3
    

      比赛的时候从不注意M的数额范围...结果竟然写了个深搜...OMG,那鲜明要晚点的点子啊,没悟出交上去现在样例居然过了,看来比赛中的样例M是非常不够大啊...可是中途依然被有些牛人hack掉了- -。

      变异性:生物S1(N1,M1)产生变异,得到S2(N2,M1)或然是S2(N1,M2)

    Sample Output

    19 55 55
    3 3 6
    

    68399皇家赌场 368399皇家赌场 4

     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <string.h>
     4 using namespace std;
     5 #define MAX 100010
     6 #define ll long long
     7 ll mu[MAX]= {0},mb[MAX]= {0};
     8 void init()
     9 {
    10     int i,j;
    11     for(i=2; i<MAX; i  )
    12     {
    13         if(!mu[i])
    14         {
    15             mu[i]=i;
    16             if(i>1000)continue;
    17             j=i*i;
    18             while(j<MAX)
    19             {
    20                 mu[j]=i;
    21                 j =i;
    22             }
    23         }
    24     }
    25     mu[1]=1;
    26     for(i=2; i<MAX; i  )
    27     {
    28         if((i/mu[i])%mu[i]==0)mu[i]=0;
    29         else mu[i]=-mu[i/mu[i]];
    30     }
    31     for(i=1; i<MAX; i  )
    32     mb[i]=mu[i]*i,mu[i] =mu[i-1],mb[i] =mb[i-1];
    33 }
    34 void solve(int n,int m)
    35 {
    36     ll ans,ansx,ansy,x,y;
    37     ans=ansx=ansy=0;
    38     int i,j,k;
    39     for(i=(n>m?m:n);i>0;)
    40     {
    41         x=n/i,y=m/i;
    42         k=max(n/(x 1),m/(y 1));
    43         ans =x*y*(mu[i]-mu[k]);
    44         ansx =(mb[i]-mb[k])*y*(1 x)*x/2;
    45         ansy =(mb[i]-mb[k])*x*(1 y)*y/2;
    46         i=k;
    47     }
    48     printf("%lld %lld %lldn",ans,ansx,ansy);
    49 }
    50 int main()
    51 {
    52     init();
    53     int n,m;
    54     while(scanf("%d%d",&n,&m)!=EOF)
    55     {
    56         solve(n,m);
    57     }
    58 }
    

    View Code

     

    C. Beauty Pageant

      模拟宇宙的自然选拔,通太早先时期的二十个生物,经过5代的本来接受,基本上就会收获最优解。

    GCD SUM

    Time Limit: 8000/4000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others)

    SubmitStatus

    #include<stdio.h>
    #include<stdlib.h>
    
    struct node
    {
        int x,y;
    }seg[210000];
    
    int va[110000];
    int cmp(const void *a,const void *b)
    {
        if((*(node *)a).x==(*(node *)b).x)
            return (*(node *)a).y-(*(node *)b).y;
        else
            return (*(node *)a).x-(*(node *)b).x;
    }
    
    int cmp2(const void *a,const void *b)
    {
        return *(int *)a-*(int *)b;
    }
    
    int main()
    {
        int n,m,temp1,temp2;
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            for(int i=1;i<=n;i  )
            {
                scanf("%d",&va[i]);
            }
            int cnt=0;
            while(m--)
            {
                scanf("%d%d",&temp1,&temp2);
                if(va[temp1]!=va[temp2])
                {
                    seg[cnt].x=va[temp1];
                    seg[cnt  ].y=va[temp2];
                    seg[cnt].x=va[temp2];
                    seg[cnt  ].y=va[temp1];
                }
            }
            qsort(seg,cnt,sizeof(seg[0]),cmp);
            int max=0,ans=0,count=0;
            for(int i=0;i<cnt;i  )
            {
                if(seg[i].x==seg[i 1].x&&seg[i].y!=seg[i 1].y)
                    count  ;
                else if(seg[i].x!=seg[i 1].x)
                {
                    count  ;
                    if(count>max)
                    {
                        max=count;
                        ans=seg[i].x;
                    }
                    count=0;
                }
            }
            if(max==0)
            {
                qsort(va 1,n,sizeof(va[0]),cmp2);
                printf("%dn",va[1]);
            }
            else
                printf("%dn",ans);
        }
        return 0;
    }
    

      模拟生物算法(多谢装配脑袋指正,那应当是遗传算法)。

    Input

    多组数据,每行五个数N,M(1 <= N,M <= 100000State of Qatar。

     

    本文由68399皇家赌场发布于域名注册,转载请注明出处:68399皇家赌场:一道算法题,看看大家的思路

    关键词: codeforces 算法 容器 函数 不带

上一篇:[hitcon2017] SSCRUISERF Me复现

下一篇:没有了