首页 > 其他分享 >P2286

P2286

时间:2024-09-12 19:35:20浏览次数:2  
标签:std set int bound right P2286 left

你说的对,但是set是一种高效的数据结构,定义于bits/stdc++.h,使用std进行调用……

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000000;
const int INF = 1e9;
int n, ans;
set<int> s;
void find(int x) {
    set<int>::iterator left, right;
    left = --s.lower_bound(x), right = s.lower_bound(x); 
    if(x - *left <= *right - x && *left != -INF) {
	    ans += x - *left;
	    s.erase(left);
	} else {
	    ans += *right - x;
	    s.erase(right);
	}
    ans %= 1000000;
}
int main() {
    scanf("%d", &n);
    int cur;
    s.insert( -INF ), s.insert( INF ); 
    for(int i = 1; i <= n; i++) {
	    int a, b;
	    scanf("%d%d", &a, &b);
	    if(s.size() == 2) {
		    cur = a; 
		    s.insert(b);
		} else if(a == cur) s.insert(b);
	    else find(b);
	}
    printf("%d\n", ans);
    return 0;
}

标签:std,set,int,bound,right,P2286,left
From: https://www.cnblogs.com/zan-mei-tai-yang/p/18410903

相关文章

  • P2286
    你说的对,但是set是一种高效的数据结构,定义于bits/stdc++.h,使用std进行调用……#include<bits/stdc++.h>usingnamespacestd;constintmaxn=1000000;constintINF=1e9;intn,ans;set<int>s;voidfind(intx){set<int>::iteratorleft,right;left=--......
  • P2286 [HNOI2004] 宠物收养场 题解
    P2286[HNOI2004]宠物收养场set做法题链\(_{洛谷}\)\(_{题库}\)思路一眼查找前驱后继的题。注意到一句话:那么用set就没有什么阻碍了,方便又快捷。题意很简单,若宠物多则查找与人需求最接近的上下两个值,人多则找与宠物最接近的上下两个人的值。出题人很善良,把选人和选宠物......
  • [lnsyoj284/luoguP2286/HNOI2004]宠物收养场
    题意原题链接每个宠物和领养人有一个对应的特点值\(a\),当领养人过多时,若添加一个特点值为\(a_p\)的宠物,则查询收养店中特点值最接近\(a_p\),为\(a_q\)的领养人(\(<a_p\)的值优先),将答案累加\(|a_q-a_p|\),然后删除该领养人,否则在收养店中添加一个领养人。反之亦然。求最终的答案\(......