Rikka with Competition
http://acm.hdu.edu.cn/showproblem.php?pid=6095
#include <iostream>
#include <cstdio>
#include <algorithm>
#define LL long long
using namespace std;
int main()
{
int t;
LL n,k;
LL a[100010];
scanf("%d",&t);
while(t--)
{
scanf("%I64d%I64d",&n,&k);
for(int i=0;i<n;i++)
{
scanf("%I64d",&a[i]);
}
sort(a,a+n);
int max1=a[n-1];
LL sum=1;//至少有一人获胜
for(int i=n-2;i>=0;i--)
{
if(max1-a[i]<=k)//如果都有机会获胜,则让能量值小的赢,否则只有能量值最大的可以赢
{
max1=a[i];
sum++;
}
}
printf("%I64d\n",sum);
}
return 0;
}
Rikka with Graph
http://acm.hdu.edu.cn/showproblem.php?pid=6090
找规律
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
using namespace std;
typedef long long ll;
ll n,m;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%lld%lld",&n,&m);
ll ans=0;
if(m>=n*(n-1)/2)
{
ans=n*(n-1);
}
else if(m>=n-1)
{
ans=n*(n-1)+2*(n*(n-1)/2-m);
}
else
{
ans=m+n*(n-m-1)+m*(1+2*(m-1)+n*(n-m-1))+(n-m-1)*n*(n-1);
}
printf("%lld\n",ans);
}
return 0;
}