[bzoj2091] [Poi2010]The Minima Game
Posted czllgzmzl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[bzoj2091] [Poi2010]The Minima Game相关的知识,希望对你有一定的参考价值。
显然每次都取排序后包含最大值的连续的一段数。
f[i]表示对于剩下的最小的i个数,先手最多比后手多多少分。
f[i]=min{a[j+1]-f[j]}...j<i,a升序排序。
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 #define ll long long 6 using namespace std; 7 const int maxn=1e6+23; 8 ll f[maxn],mx; 9 int a[maxn]; 10 int i,j,k,n,m; 11 12 int ra;char rx; 13 inline int read(){ 14 rx=getchar(),ra=0; 15 while(rx<\'0\'||rx>\'9\')rx=getchar(); 16 while(rx>=\'0\'&&rx<=\'9\')ra*=10,ra+=rx-48,rx=getchar();return ra; 17 } 18 int main(){ 19 n=read(); 20 for(i=1;i<=n;i++)a[i]=read(); 21 sort(a+1,a+1+n); 22 for(i=1;i<=n;i++)mx=max(mx,a[i]-f[i-1]),f[i]=mx; 23 printf("%lld\\n",f[n]); 24 }
以上是关于[bzoj2091] [Poi2010]The Minima Game的主要内容,如果未能解决你的问题,请参考以下文章
bzoj2091Poi2010The Minima Game
bzoj1510[POI2006]Kra-The Disks*
[BZOJ1537][POI2005]Aut- The Bus