[Kattis-crisscrosscables] Criss-Cross Cables (贪心+优先队列)
题意:第一行给定n个点和m条绳子,第二行是点的位置(从小到大排列),第三行是绳子的长度。问能不能把所有的绳子都连进去(绳子的长度>=点之间的距离才可以连,且相同的两个点之间不能连两条绳子)。
思路:
贪心,n个点共可以连n*(n-1)/2条边,如果绳子数量大于这些就no
维护一个最小堆
然后先遍历一遍把相邻两点的距离放入堆中
越短的绳子肯定要对应距离越小的边,我们从小到大遍历绳子,每次找出里面最短的边,与当前遍历到的的绳子长度进行比较,如果当前遍历到的绳子比目前能连的最短的边的长度还小,那么肯定不能满足题目要求,直接跳出,否则的话,把目前的l与r右边的一个组成的距离放入堆中,进行下一次循环,直到遍历完所有绳子。如果能遍历完,那么满足了要求。
#include<iostream>
#include<set>
#include<queue>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=5e5+5;
struct node{int l,r,val;bool operator < (const node a) const{return a.val<val;}
};
int a[maxn],s[maxn],n,m;
bool solve()
{if(m>n*(n-1)/2)return false;priority_queue<node> q;for(int i=0;i<n-1;i++)q.push(node{i,i+1,a[i+1]-a[i]});int cnt=0;while(cnt<m){node temp=q.top();q.pop();int l=temp.l,r=temp.r,val=temp.val;if(s[cnt++]<val)return false;if(r<n-1)q.push(node{l,r+1,a[r+1]-a[l]});}return true;//忘了写 竟然疯狂RE
}
int main()
{scanf("%d%d",&n,&m);for(int i=0;i<n;i++)scanf("%d",&a[i]);for(int i=0;i<m;i++)scanf("%d",&s[i]);sort(a,a+n);sort(s,s+m);if(solve())printf("yes");else printf("no");return 0;
}
[Kattis-crisscrosscables] Criss-Cross Cables (贪心+优先队列)相关推荐
- HDU 6438 网络赛 Buy and Resell(贪心 + 优先队列)题解
思路:维护一个递增队列,如果当天的w比队首大,那么我们给收益增加 w - q.top(),这里的意思可以理解为w对总收益的贡献而不是真正获利的具体数额,这样我们就能求出最大收益.注意一下,如果w对收益 ...
- 1163 最高的奖励(贪心+优先队列)
有N个任务,每个任务有一个最晚结束时间以及一个对应的奖励.在结束时间之前完成该任务,就可以获得对应的奖励.完成每一个任务所需的时间都是1个单位时间.有时候完成所有任务是不可能的,因为时间上可能会有冲突 ...
- 贪心+优先队列 HDOJ 5360 Hiking
题目传送门 1 /* 2 题意:求邀请顺序使得去爬山的人最多,每个人有去的条件 3 贪心+优先队列:首先按照l和r从小到大排序,每一次将当前人数相同的被邀请者入队,那么只要能当前人数比最多人数条件小, ...
- 贪心(优先队列) - New Year Snowmen - CodeForces - 140C
贪心(优先队列) - New Year Snowmen - CodeForces - 140C 题意: 给定一个长度为n的正整数序列a1,a2,...,an.给定一个长度为n的正整数序列a_1,a_2 ...
- CodeForces 140C New Year Snowmen (贪心+优先队列)
题意:n个数,选三个严格下降的数为一组,求最多能选多少组,并列出每组哪些数. 题解:贪心+优先队列 最多能选多少组,那么必须贪心数量多的. 例如:1 1 2 3 4 5 如果按照数的大小排序,只能贪到 ...
- CF140C New Year Snowmen(贪心+优先队列)
CF140C 贪心+优先队列 贪心策略:每次取出数量最多的三种球,合成一个答案,再把雪球数都-1再插回去,只要还剩下三种雪球就可以不断地合成 雪球数用优先队列维护 #include <bits/ ...
- 【BHOJ 女娲加农炮 |、||】贪心 | 优先队列 | 堆 | E
这次我们通过两道例题来总结一下优先队列的用法和实现: 目录: [BHOJ 1512]女娲加农炮 [BHOJ 1517]女娲加农炮II [BHOJ 1512]女娲加农炮 核心:贪心 + 优先队列 URL ...
- codeforces D. Fedor and coupons 贪心+优先队列
题目地址:点击打开链接 D. Fedor and coupons time limit per test 4 seconds memory limit per test 256 megabytes i ...
- 小A与任务 (贪心 优先队列)
题目链接:小A与任务 题意: 小A手头有 n 份任务,他可以以任意顺序完成这些任务,只有完成当前的任务后,他才能做下一个任务 第 i 个任务需要花费 xi 的时间,同时完成第 i 个任务的时间不能晚于 ...
- LA 4254 Processor 处理器 【二分 贪心 优先队列】
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=21663 二分: 最大值最小的问题通过二分来求解.对处理器速度进行 ...
最新文章
- [轉]俞老师在同济大学的演讲词:度过有意义的生命
- Kubernetes二次开发--Operator的使用
- QTP的Action之间传递参数
- List, Set, Map是否继承自Collection接口?
- 【数字信号处理】基于DFT的滤波系列3之插值滤波(含MATLAB代码)
- 1000道Python题库系列分享25(40道Pandas客观题)
- 顺序堆栈实现数制转换以十进制数转化为八进制数为例
- 7 php程序的调试方法_PHP 程序员的调试技术
- WinCE设备仿真器+虚拟串口+GPS模拟器搭建开发测试环境
- php bing翻译的api,使用PHP和SOAP访问Bing翻译服务
- EDA与VHDL题目——七人表决器
- 灵格斯怎么屏幕取词_完整页灵格斯词霸怎么用,灵格斯词霸使用教程_9号资讯
- VMware5.5-VMware补丁程序VUM
- 传智:自己简单实现一个struts2框架的demo
- 汇编语言:协处理器浮点指令:FILD
- 计算机不识别加密狗,用友加密狗识别不到_电脑无法识别用友软件加密狗
- 稳压二极管与肖特基二极管
- ESB实现SOA架构
- 计算机word打不原因什么意思,word打不开什么原因
- input输入框简单的实时搜索(过滤)功能 (uni-app)
热门文章
- [C0] 人工智能大师访谈 by 吴恩达
- SSL/TLS(3): CA证书解释
- 京东客小程序功能模块源码V6.0.2
- PDF怎么打印?为什么有时选择打印没有反应?
- 概率逗号分号_概率P中有多个逗号表示什么意思
- Python 数据处理与分析(三) 设计一个高回报的投资组合(投资回报和风险分析)任务 2:计算不同类型的收益率和投资组合的收益率
- Android app语言中英文转换、多语言转换
- mb.php js 劫持,黑帽seo防止网站被k的js劫持跳转代码
- java实现微信网页授权登录
- HTTP 状态码502 深度解析