zoukankan      html  css  js  c++  java
  • 【贪心】【multiset】 Codeforces Round #401 (Div. 2) B. Game of Credit Cards

    对第一个人的排序,然后从小到大处理,对第一个人的每枚卡片,从第二个人的卡片中选择一个大于等于它的最小的,否则选择一个当前剩下的最小的,这样可以保证负场最少。

    如果选择的改成大于它的最小的,就可以保证胜场最多。

    用multiset处理。

    #include<cstdio>
    #include<set>
    #include<algorithm>
    using namespace std;
    typedef pair<int,int> Point;
    Point c[1010];
    multiset<int>S,tS;
    typedef multiset<int>::iterator ITER;
    int n,ans;
    char a[1010],b[1010],d[1010];
    int main()
    {
    	freopen("b.in","r",stdin);
    	scanf("%d%s%s",&n,a+1,b+1);
    	for(int i=1;i<=n;++i)
    	  {
    	  	c[i].first=a[i]-'0';
    	  	c[i].second=i;
    	  }
    	for(int i=1;i<=n;++i)
    	  S.insert(b[i]-'0');
    	tS=S;
    	sort(c+1,c+n+1);
    	for(int i=1;i<=n;++i)
    	  {
    	  	ITER it=S.lower_bound(c[i].first);
    	  	if(it==S.end())
    	  	  {
    	  	  	S.erase(S.begin());
    	  	  	++ans;
    	  	  }
    	  	else
    	  	  S.erase(it);
    	  }
    	printf("%d
    ",ans);
    	ans=0;
    	S=tS;
    	for(int i=1;i<=n;++i)
    	  {
    	  	ITER it=S.upper_bound(c[i].first);
    	  	if(it==S.end())
    	  	  S.erase(S.begin());
    	  	else
    	  	  {
    	  	  	S.erase(it);
    	  	  	++ans;
    	  	  }
    	  }
    	printf("%d
    ",ans);
    	return 0;
    }
  • 相关阅读:
    bzoj3223: Tyvj 1729 文艺平衡树
    bzoj1014: [JSOI2008]火星人prefix
    bzoj3231: [Sdoi2008]递归数列
    bzoj2282: [Sdoi2011]消防
    bzoj3195: [Jxoi2012]奇怪的道路
    成员内部类 局部内部类 匿名内部类
    静态代码块 构造代码块
    父类子类转换
    clone()方法
    后缀表达式求值
  • 原文地址:https://www.cnblogs.com/autsky-jadek/p/6440247.html
Copyright © 2011-2022 走看看