• 贪心题


    (1)贪心

    题目链接https://blog.csdn.net/ayf1988/article/details/101418391

    啊啊啊啊正解写挂,真的是练题不够吧

    就是按x从小到大排序,遇到一个点如果是入口就二分查找最小值取出,是出口就加入;

    set维护

    #include <set>
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    const int N=1e6+10;
    inline int read() {
    	int x=0;char ch=getchar();
    	while(!isdigit(ch)) ch=getchar();
    	while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}
    	return x;
    }
    int n,t,ans,x,y;
    int pos[N];
    bool num[N]; 
    set<int>s;
    int main() {
    	t=read();
    	n=read();
    	for(int i=1;i<=n;i++) {
    		x=read();y=read();
    		num[x]=1;
    		pos[x]=y;
    	}
    	for(int i=1;i<=n;i++) {
    		x=read();y=read();
    		num[x]=0;
    		pos[x]=y;
    	}
    	for(int i=0;i<2*n;i++) {
    		if(num[i]) s.insert(pos[i]);
    		else {
    			set<int>::iterator p=s.lower_bound(pos[i]);
    			if(p==s.begin()) continue;
    			p--;
    			ans++;
    			s.erase(p);
    		}
    	}
    	printf("%d
    ",ans);
    	return 0;
    }
    

  • 相关阅读:
    Fibonacci(斐波那契)数列方法整理
    java数组可遍历但是不能作为Iterable参数传递
    欧几里得算法的证明
    List<? extends Pet>中问号的解释
    P1387 最大正方形
    P1313 计算系数
    P1049 装箱问题
    乘积最大
    P1091 合唱队形
    bsgs
  • 原文地址:https://www.cnblogs.com/ke-xin/p/13781925.html
Copyright © 2020-2023  润新知