Codeforces Round #281 (Div. 2) - C

来源:互联网 发布:米思米 cad数据下载 编辑:程序博客网 时间:2024/06/01 09:46

被坑的地方就是贪心的选法,没错但思维不清晰;

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <vector>#define INF 2000001000using namespace std;int  n,m;const int maxn = 200100;int a[maxn],b[maxn];int get(int& fen2,int v){int d = v;int p =upper_bound(b,b+m,d)-b;fen2 = 2*(p)+3*(m-p);}int main(){    scanf("%d",&n);    for(int i=0;i<n;i++) scanf("%d",&a[i]);    scanf("%d",&m);    for(int i=0;i<m;i++) scanf("%d",&b[i]);    sort(a,a+n);    sort(b,b+m);    int fen1,fen2;    int cha = -INF;    if(a[0] > 0){        int d = a[0]-1;        fen1 = 3*n;        get(fen2,d);        cha = fen1 - fen2;    }    for(int i=0;i<n;i++){          if(i==n-1 || a[i] !=a[i+1]) {  //条件很重要              int d = i==n-1 ? INF :a[i+1]-1;              int te1 = 2*(i+1)+3*(n-i-1),te2;              get(te2,d);              if(te1 - te2 > cha ||te1 - te2 ==cha&&fen1<te1){                  fen1 = te1; fen2 = te2;                  cha = te1 - te2;              }           }    }    printf("%d:%d\n",fen1,fen2);    return 0;}


0 0
原创粉丝点击