UVA题解 UVA1344 【Tian Ji -- The Horse Racing】

    技术2025-11-16  4

    这题的样例输出有一点小问题,就是要换行,管理大大看到时希望可以改下哈。


    QwQ,这是一道双倍经验的题目呢,原题是洛谷的P1650 田忌赛马。

    都是一道经典的贪心题目。

    将田忌和齐王的马进行排序。然后将田忌最大的马与国王的进行比较。如果田忌最大的马大于国王的,那么就胜场加一。如果田忌最大的马小于国王的,那么就一定会输,所以用田忌最小的马输给国王最大的马。如果田忌最大的马等于国王的,那么就比较最小的马。

    接下来代码也就呼之欲出了。

    #include <cmath> #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> using namespace std; int a[2010],b[2010],n; int main () { while (scanf ("%d",&n)) { if (n==0) return 0; for (int i=0;i<n;i++) scanf ("%d",&a[i]); for (int i=0;i<n;i++) scanf ("%d",&b[i]); sort (a,a+n); sort (b,b+n);//排序 int i=0,j=n-1; int t=0,k=n-1,cnt=0; int x=0,y=0; while (cnt<n) { if (a[j]>b[k]) { x++; j--; k--; cnt++; } else { while (a[i]>b[t]&&cnt<n) { x++; i++; t++; cnt++; } if(cnt==n) break; if (a[i]<b[k]) y++; i++; k--; cnt++; } if (j<0||k<0) break; } printf ("%d\n",(x-y)*200); } return 0; }

    QwQ

    Processed: 0.010, SQL: 9