• HDU-1052-Tian Ji -- The Horse Racing


    刚开始用的动态规划+贪心

    知道转移方程,但不知如何实现

    下面为别人的思想:

    f [i,j] 表示齐王按从强到弱的顺序出马和田忌进行了 i 场比赛之后,田忌从“头”取了 j 匹较强的马,从“尾”取了 i-j 匹较弱的马,所能够得到的最大盈利。

    状态转移方程如下:

     f[i,j]=max{f[i-1,j]+g[n-(i-j)+1,i],f[i-1,j-1]+g[j,i]}

    其中g[i,j]表示田忌的马和齐王的马分别按照由强到弱的顺序排序之后,田忌的第 i 匹马和齐王的第 j 匹马赛跑所能取得的盈利,胜为200,输为-200,平为0。

    若读者知道怎样实现,请留言分享您的思路,谢谢

    哎,又参考了别人的代码,贪心,太贪心了

    代码有改动,感谢纠错

    代码如下:

    #include<stdio.h>
    #include<stdlib.h>
    
    int cmp(const void *a,const void *b)  //按速度由快到慢排序
    {
        return *(int*)b-*(int*)a;
    }
    
    int main()
    {
        int n,i;
        int t[1005],k[1005];
        while(scanf("%d",&n),n)
        {
            for(i=1; i<=n; i++)
                scanf("%d",&t[i]);
            for(i=1; i<=n; i++)
                scanf("%d",&k[i]);
            qsort(t+1, n, sizeof(t[0]), cmp) ;  //给田忌的马排序
            qsort(k+1, n, sizeof(k[0]), cmp) ;  //  国王
            int t_first, k_first, t_last, k_last;
            t_first = k_first = 1,t_last = k_last = n ;
            int flag = 1, ans = 0;
            while(flag)
            {
                if(t_first == t_last) flag = 0;  //最后一匹了
                if(t[t_first] > k[k_first])      //若当前田忌最快的马比国王最快的马快
                {
                    t_first++;                   //让它俩比吧,田忌最快的马变成下一匹
                    k_first++;
                    ans += 200;
                }
                else if(t[t_last] > k[k_last])
                {
                    t_last--;
                    k_last--;
                    ans += 200;
                }
                else                             //以上都不满足,下面注意了。。。
                {
                    if(t[t_last] < k[k_first])   //若田最慢比国王最快的慢,比,此if只对ans -= 200有效
                        ans -= 200;
                    t_last--;                    //上面的if若成立,执行这两句,不成立同样执行
                    k_first++;                   //那就是田最慢与国王最快同速
                }
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    pptpvpn链接问题
    nginx网站架构优化思路(原)
    KEEPALIVED 检测RS原理
    linux 做gw(nat)详细配置
    pptpvpn 连接后 无法上外网
    网站最常见的错误
    Python服务器开发 -- 网络基础
    python高性能编程方法一
    一步步来用C语言来写python扩展
    http响应Last-Modified和ETag
  • 原文地址:https://www.cnblogs.com/Houheshuai/p/3702927.html
Copyright © 2020-2023  润新知