二进制中1的个数:__builtin_popcount(n).
区间选点,最大不相交区间数量
#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
const int N = 1e5 + 100;
pair<int,int> p[N];
int cmp(pair<int,int> p1, pair<int,int> p2)
{
return p1.y < p2.y;
}
void solve(){
int n;
cin >> n;
for(int i = 0; i < n; i ++)
cin >> p[i].x >> p[i].y;
sort(p, p + n, cmp);
int ans = 1, last = p[0].y;
for(int i = 0; i < n; i ++){
if(last < p[i].x) ans ++, last = p[i].y;
}
cout << ans << endl;
}
int main()
{
solve();
}
区间分组
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define x first
#define y second
const int N = 1e5 + 100;
pair<int,int> p[N];
void solve()
{
priority_queue<int, vector<int>, greater<int>> heap;
int n;
cin >> n;
for(int i = 0; i < n; i ++){
cin >> p[i].x >> p[i].y;
}