zoukankan      html  css  js  c++  java
  • HDU 4268 Alice and Bob [贪心]

      贪心,用set水过。

      先按x,后按y排序,都想等时Bob放前面。然后扫一遍遇到Bob就将卡片的y值放入set中,遇到Alice就在集合中找一个能被他覆盖的y最大的数,将它擦去。因为如若能覆盖而不去覆盖了就等于浪费了这个,所以必然选择用掉这张卡片。最后统计一共成功覆盖了多少个即可。

     1 #include <string.h>
     2 #include <stdio.h>
     3 #include <algorithm>
     4 #include <set>
     5 #define inset multiset<int,greater<int> >
     6 using namespace std;
     7 struct mat{
     8     int x,y,t;
     9     bool operator <(const mat& m)const
    10     {return x<m.x||(x==m.x&&y<m.y)||(x==m.x&&y==m.y&&t<m.t);}
    11 }m[200005];
    12 inset st;
    13 inset::iterator sit;
    14 int cas,n,ans;
    15 int main(){
    16     for(scanf("%d",&cas);cas--;){
    17         scanf("%d",&n);
    18         for(int i=0;i<2*n;i++)
    19             scanf("%d%d",&m[i].x,&m[i].y),
    20             m[i].t=(i<n?1:0);
    21         sort(m,m+2*n);
    22         st.clear();ans=0;
    23         for(int i=0;i<2*n;i++){
    24             if(m[i].t==0)
    25                 st.insert(m[i].y);
    26             else if((sit=st.lower_bound(m[i].y))!=st.end())
    27                 st.erase(sit),ans++;
    28         }
    29         printf("%d\n",ans);
    30     }
    31     return 0;
    32 }
  • 相关阅读:
    Array.sort源码
    Linkedlist源码
    最大公约数 2.7
    腾讯笔试题
    腾讯2014校园招聘笔试题
    指针问题
    JavaScript 日历
    QT 初阶 第二章 创建对话框(查找对话框实例)
    QT 初阶 1.3 节 控件的几何排列
    “项目中的问题”
  • 原文地址:https://www.cnblogs.com/swm8023/p/2679418.html
Copyright © 2011-2022 走看看