Codeforces555 B.Case of Fugitive(贪心+set)

2024-03-22 07:10

本文主要是介绍Codeforces555 B.Case of Fugitive(贪心+set),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题意:

在这里插入图片描述
如果能联通,输出连接方案。

数据范围:n,m<=2e5,1<=l,r,a(i)<=1e18

解法:
假设相邻区间为[l1,r1],[l2,r2],
那么能连接他们的木板长度应该在范围[l2-r1,r2-l1].
这样的话就有n-1个形如(l,r)的二元组.
将二元组按照r从小到大排序,r相同时按照l从小到大排序.
因为排序之后r是递增的,r相同时l是递增的,
那么遍历二元组(l,r),应该贪心地找在[l,r]范围内的最短木板.
木板可以用set存,找木板在set里面二分就行了.
code:
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define PI pair<int,int>
const int maxm=2e5+5;
struct Line{int l,r,id;
}xx[maxm];
int l[maxm],r[maxm];
int ans[maxm];
int n,m;
bool cmp(Line a,Line b){if(a.r!=b.r)return a.r<b.r;return a.l<b.l;
}
signed main(){ios::sync_with_stdio(0);cin.tie(0);cin>>n>>m;//for(int i=1;i<=n;i++){cin>>l[i]>>r[i];}for(int i=1;i<=n-1;i++){xx[i]={l[i+1]-r[i],r[i+1]-l[i],i};}sort(xx+1,xx+1+(n-1),cmp);//multiset<PI>s;for(int i=1;i<=m;i++){int x;cin>>x;s.insert({x,i});}//for(int i=1;i<=n-1;i++){auto it=s.lower_bound({xx[i].l,0});//找>=l的最小的if(it==s.end()||it->first>xx[i].r){cout<<"No"<<endl;return 0;}ans[xx[i].id]=it->second;s.erase(it);}cout<<"Yes"<<endl;for(int i=1;i<=n-1;i++){cout<<ans[i]<<' ';}cout<<endl;return 0;
}

这篇关于Codeforces555 B.Case of Fugitive(贪心+set)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/834788

相关文章

usaco 1.3 Barn Repair(贪心)

思路:用上M块木板时有 M-1 个间隙。目标是让总间隙最大。将相邻两个有牛的牛棚之间间隔的牛棚数排序,选取最大的M-1个作为间隙,其余地方用木板盖住。 做法: 1.若,板(M) 的数目大于或等于 牛棚中有牛的数目(C),则 目测 给每个牛牛发一个板就为最小的需求~ 2.否则,先对 牛牛们的门牌号排序,然后 用一个数组 blank[ ] 记录两门牌号之间的距离,然后 用数组 an

poj 3190 优先队列+贪心

题意: 有n头牛,分别给他们挤奶的时间。 然后每头牛挤奶的时候都要在一个stall里面,并且每个stall每次只能占用一头牛。 问最少需要多少个stall,并输出每头牛所在的stall。 e.g 样例: INPUT: 51 102 43 65 84 7 OUTPUT: 412324 HINT: Explanation of the s

poj 3050 dfs + set的妙用

题意: 给一个5x5的矩阵,求由多少个由连续6个元素组成的不一样的字符的个数。 解析: dfs + set去重搞定。 代码: #include <iostream>#include <cstdio>#include <set>#include <cstdlib>#include <algorithm>#include <cstring>#include <cm

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

POJ2010 贪心优先队列

c头牛,需要选n头(奇数);学校总共有f的资金, 每头牛分数score和学费cost,问合法招生方案中,中间分数(即排名第(n+1)/2)最高的是多少。 n头牛按照先score后cost从小到大排序; 枚举中间score的牛,  预处理左边与右边的最小花费和。 预处理直接优先队列贪心 public class Main {public static voi

ural 1820. Ural Steaks 贪心

1820. Ural Steaks Time limit: 0.5 second Memory limit: 64 MB After the personal contest, happy but hungry programmers dropped into the restaurant “Ural Steaks” and ordered  n specialty steaks

ural 1014. Product of Digits贪心

1014. Product of Digits Time limit: 1.0 second Memory limit: 64 MB Your task is to find the minimal positive integer number  Q so that the product of digits of  Q is exactly equal to  N. Inpu

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已