牛客小白月赛15 A斑羚飞渡 (贪心)
题目链接:https://ac.nowcoder.com/acm/contest/917/A
题意:
有n个羊,每只羊可以自己可以跳x[i]米,踩在别的羊身上可以跳y[i]米,每只羊只可以被别的羊踩一次每只羊也可以不被踩或者不踩别的羊。现在要跳过长为s米的峡谷,问最优情况下,有多少只羊可以越过峡谷。
题解:
贪心策略:
如果羊自己可以过,就让他自己过(没必要为了让一只羊过在多浪费一只羊)
如果羊的x[i]+y[i]<s,则表明即使他踩在别的羊身上也过不去。所以直接把这些羊当作跳板(被踩的羊)。这种羊的x[i] 放入a数组中。
如果羊的x[i]+y[i]>=s,则表示他可以踩在别的羊身上过去,只要被踩得羊的x[i]小于等于他自己的x[i]且与y[i]相加大于等于s即可越过峡谷此时则配对成功。这种羊的y[i]放在b数组中。
将a中的值从小到大排列,b中的值从大到小排列,每一个b中的值取找一个能够满足他的最小的a。
因为b中的值都满足x[i]+y[i] >=s,所以只要a[i]+b[j]>=s,那么s-y[i]这个点一定在a[i]和x[i]内,所以b[j]这只羊一定可以踩在a[i]这只羊身上,既可以越过峡谷。
附上AC代码:
#include <bits/stdc++.h>using namespace std;#define LL long long
const int maxn=1e6+5;LL a[maxn],b[maxn];
LL s;
int n,cnta=0,cntb=0;bool cmp(LL a,LL b)
{return a>b;
}int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>s;LL ans=0,x,y;for(int i=0;i<n;i++){cin>>x>>y;if(x>=s) ans++;else if(x+y<s) a[cnta++]=x;//不能到达对岸,直接当作跳板else b[cntb++]=y;//可以跳到对岸,则计入b中}sort(a,a+cnta);//从小到大排序sort(b,b+cntb,cmp);//从大到小排序//贪心:最大的先和最小的配对int i=0,j=0;for(;i<cnta&&j<cntb;j++){LL tmp=b[j];while(i<cnta){//因为保证了b可以过即x+y>=s,所以如果y+a[i]>=s,那么x一定和a[i]有交集且保证在那个点跳跃可以飞过峡谷if(tmp+a[i]>=s)//如果第bj个踩在第ai个上可以过,则数量加一{ans++;i++;break;}elsei++;}}if(j==cntb)//如果可以飞过峡谷的都配对完了,那么直接输出结果cout<<ans;else//如果没有配对玩,则直接两两配对cout<<ans+(cntb-j)/2;return 0;
}
欢迎评论!
牛客小白月赛15 A斑羚飞渡 (贪心)相关推荐
- 牛客网 — [牛客小白月赛15]斑羚飞渡(贪心)
题目链接:https://ac.nowcoder.com/acm/contest/917/A 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K 6 ...
- 牛客小白月赛15 A~E 简要题解
A 斑羚飞渡 : 有 n n n只斑羚,每只斑羚跳跃的最远距离为 x [ i ] x[i] x[i],斑羚在别人的背上起跳的最远距离为 y [ i ] y[i] y[i],峡谷的两岸的距离为 s s ...
- 牛客小白月赛4 D.郊区春游
牛客小白月赛4 D.郊区春游 题目链接 题目描述 今天春天铁子的班上组织了一场春游,在铁子的城市里有 nnn 个郊区和 mmm 条无向道路,第 iii 条道路连接郊区 AiA_iAi 和 BiB_i ...
- 牛客小白月赛20 D.3的倍数
牛客小白月赛20 D.3的倍数 题目描述 给你 n 个字符串,每个字符串最多包含 A - Z 这26个字母,Keven 现在取了一些字符串,发现每个字母出现的次数都是 3 的倍数,Keven 现在想要 ...
- 牛客小白月赛6 J.洋灰三角
牛客小白月赛6 J.洋灰三角 题目链接 题目描述 洋灰是一种建筑材料,常用来筑桥搭建高层建筑,又称,水泥.混凝土. WHZ有很多铸造成三角形的洋灰块,他想把这些洋灰三角按照一定的规律放到摆成一排的n个 ...
- 牛客小白月赛19 题解
牛客小白月赛19 A. 「水」滔天巨浪(思维) B. 「木」迷雾森林 (数字三角形模型) C. 「土」秘法地震(二维前缀和) F. 「水」悠悠碧波 (字符串) D. 「金」初心如金 (找规律) G. ...
- 牛客小白月赛16 小石的签到题(博弈)
牛客小白月赛16 小石的签到题 链接:https://ac.nowcoder.com/acm/contest/949/A来源:牛客网 题目描述 输入描述: 共一行,输入一个数 nnn . 输出描述: ...
- F.孤独(牛客小白月赛39)
F.孤独(牛客小白月赛39) 题意: 给定一棵树,寻找一个路径,将断掉所有与这个路径上的点相连的边,使得剩下的最大连通块的大小最小 题解: 这题有点印象,感觉做过,至少这个方法肯定遇到过 设dp[u] ...
- 牛客小白月赛58 B(暴力)C(思维)D(dp滚动数组优化)
牛客小白月赛58 感觉没什么意思,这场月赛出题人有点问题. B 题意:给定一定的数据填充顺序和每一个填充层的名称,只有填充满了上一层才可以填充下一层. 但是每一层又属于某一个大层,一个大层中包含了若干 ...
最新文章
- 第二章 Servlet核心技术 实训二
- 一文讲解图像插值算法原理!附Python实现
- 跟我学Kafka源码Producer分析
- glance服务上传镜像的时候,报错HTTPInternalServerError (HTTP 500)
- 皮肤的实时3S渲染(OpenGL + GLSL)
- python 三维散点图拟合曲面_python实现三维拟合的方法
- 「兵以诈立」—— 孙子的兵法
- linux shell 脚本 入门到实战详解[⭐建议收藏!!⭐]
- AAC AMR WAV MP3 采样率
- 【考研经验分享】2020信工所二室双非上岸经验贴
- 误差反向传播(手把手教你推导如何通过反向传播更新参数)
- 录制计算机网课,电脑怎么录制网络课程?简单专业的录制方法分享
- Python常用英文单词【最强总结】
- 新媒体运营胡耀文教程:短视频+怎么变现?一文读懂4大商业模式
- 在 Node.js 应用中集成 Redis
- 类的练习:定义一个Tree(树)类,有成员ages(树龄),成员函数grow(int years)对ages加上years,age()显示tree对象的ages的值。
- C++ free指针时的异常
- 题解 P2089 【烤鸡】
- Tensorflow 2.5 model.evaluate报错Invalid argument: required broadcastable shapes at loc(unknown)
- ELINK离线编程器常见问题
热门文章
- 图论新维度:数据驱动的数学理论,揭秘复杂联系的新工具
- java 遍历list并删除_Java遍历List并删除某些元素
- word中带圈的数字
- 2019年 8月23日 道家经典
- 四十六 这谁啊谁 我在软件园的那些日子里
- CC2652R ZigBee OTA 调试记录 改为支持 AT25DF041B 512KB flash
- python scrapy 入门_Python爬虫Scrapy入门看这篇就够了
- Ubantu 使用extundelete恢复数据
- 2021年场(厂)内专用机动车辆安全管理新版试题及场(厂)内专用机动车辆安全管理模拟考试题
- IntelliJ idea 配置文件ascii码转换