KK's Number
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 267 Accepted Submission(s): 149
Problem Description
Our lovely KK has a funny mathematical game:This game requires two people,There are
N(1≤N≤5∗104)
numbers,every time KK will take the numbers,first.Every time you can take any number of the numbers.Until the
N
number is taken.The minimum number of numbers is the score for each time.KK and the opponent's strategy is as much as possible to make their score minus the opponent's score more.In this case,How much is the final KK score minus the opponent's score?
Input
The first line of the input file contains an integer
T(1≤T≤10)
, which indicates the number of test cases.
For each test case, there are two lines,in the first line is a integer N(1≤N≤5∗104) ,the other line has N positive integers(no more than 109 ).
For each test case, there are two lines,in the first line is a integer N(1≤N≤5∗104) ,the other line has N positive integers(no more than 109 ).
Output
For each test case, there are one lines,includes a integer,indicating the final KK's score minus the opponent's score.
Sample Input
1 3 1 3 1
Sample Output
2HintFirstly KK take 3;and the opponent take 1,1,so the result is 2.
Source
Recommend
我拉低了这道题的ac率,╰( ̄▽ ̄)╭:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int a[110000],i,j,k,l,m,n,dp[110000];
int main()
{
int p;
scanf("%d",&p);
while(p--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
dp[0]=a[0];
for(i=1;i<n;i++)
dp[i]=max(dp[i-1],a[i]-dp[i-1]);
printf("%d\n",dp[n-1]);
}
}