题解 P1650 【赛马】

shadowice1984

2017-09-19 13:50:28

Solution

按楼下大佬们讲的贪心 如果头尾可以赢就直接赢钱; 然后不行的花就用最坏的马浪费掉齐王的好马。 然后你就得了10分; 因为没!有!特!判! 如果在怼的时候平局了,是不扣钱的!!! ```cpp #include<stdio.h> #include<algorithm> using namespace std; int n;int qw[2000];int tj[2000]; int* headqw;int* tailqw;int* headtj;int* tailtj; int res; int main() { scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&tj[i]); } for(int i=0;i<n;i++) { scanf("%d",&qw[i]); } sort(tj,tj+n);sort(qw,qw+n);//排序 tailqw=qw;tailtj=tj;headqw=qw+n-1;headtj=tj+n-1;//头尾指针,方便代码 for(int i=0;i<n;i++) { if(*headtj>*headqw)//头是否能赢 { res+=200;headtj--;headqw--; continue; } if(*tailtj>*tailqw)//尾是否能赢 { res+=200;tailtj++;tailqw++; continue; } if(*tailtj<*headqw)//硬怼 { res-=200; tailtj++;headqw--; } else if(*tailtj==*headqw)//特判!!!(敲黑板)不加就是10分! { tailtj++;headqw--; } } printf("%d",res); return 0;//拜拜程序~ } ```