题目链接: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斑羚飞渡 (贪心)相关推荐

  1. 牛客网 — [牛客小白月赛15]斑羚飞渡(贪心)

    题目链接:https://ac.nowcoder.com/acm/contest/917/A 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K 6 ...

  2. 牛客小白月赛15 A~E 简要题解

    A 斑羚飞渡 : 有 n n n只斑羚,每只斑羚跳跃的最远距离为 x [ i ] x[i] x[i],斑羚在别人的背上起跳的最远距离为 y [ i ] y[i] y[i],峡谷的两岸的距离为 s s ...

  3. 牛客小白月赛4 D.郊区春游

    牛客小白月赛4 D.郊区春游 题目链接 题目描述 今天春天铁子的班上组织了一场春游,在铁子的城市里有 nnn 个郊区和 mmm 条无向道路,第 iii 条道路连接郊区 AiA_iAi​ 和 BiB_i ...

  4. 牛客小白月赛20 D.3的倍数

    牛客小白月赛20 D.3的倍数 题目描述 给你 n 个字符串,每个字符串最多包含 A - Z 这26个字母,Keven 现在取了一些字符串,发现每个字母出现的次数都是 3 的倍数,Keven 现在想要 ...

  5. 牛客小白月赛6 J.洋灰三角

    牛客小白月赛6 J.洋灰三角 题目链接 题目描述 洋灰是一种建筑材料,常用来筑桥搭建高层建筑,又称,水泥.混凝土. WHZ有很多铸造成三角形的洋灰块,他想把这些洋灰三角按照一定的规律放到摆成一排的n个 ...

  6. 牛客小白月赛19 题解

    牛客小白月赛19 A. 「水」滔天巨浪(思维) B. 「木」迷雾森林 (数字三角形模型) C. 「土」秘法地震(二维前缀和) F. 「水」悠悠碧波 (字符串) D. 「金」初心如金 (找规律) G. ...

  7. 牛客小白月赛16 小石的签到题(博弈)

    牛客小白月赛16 小石的签到题 链接:https://ac.nowcoder.com/acm/contest/949/A来源:牛客网 题目描述 输入描述: 共一行,输入一个数 nnn . 输出描述: ...

  8. F.孤独(牛客小白月赛39)

    F.孤独(牛客小白月赛39) 题意: 给定一棵树,寻找一个路径,将断掉所有与这个路径上的点相连的边,使得剩下的最大连通块的大小最小 题解: 这题有点印象,感觉做过,至少这个方法肯定遇到过 设dp[u] ...

  9. 牛客小白月赛58 B(暴力)C(思维)D(dp滚动数组优化)

    牛客小白月赛58 感觉没什么意思,这场月赛出题人有点问题. B 题意:给定一定的数据填充顺序和每一个填充层的名称,只有填充满了上一层才可以填充下一层. 但是每一层又属于某一个大层,一个大层中包含了若干 ...

最新文章

  1. 第二章 Servlet核心技术 实训二
  2. 一文讲解图像插值算法原理!附Python实现
  3. 跟我学Kafka源码Producer分析
  4. glance服务上传镜像的时候,报错HTTPInternalServerError (HTTP 500)
  5. 皮肤的实时3S渲染(OpenGL + GLSL)
  6. python 三维散点图拟合曲面_python实现三维拟合的方法
  7. 「兵以诈立」—— 孙子的兵法
  8. linux shell 脚本 入门到实战详解[⭐建议收藏!!⭐]
  9. AAC AMR WAV MP3 采样率
  10. 【考研经验分享】2020信工所二室双非上岸经验贴
  11. 误差反向传播(手把手教你推导如何通过反向传播更新参数)
  12. 录制计算机网课,电脑怎么录制网络课程?简单专业的录制方法分享
  13. Python常用英文单词【最强总结】
  14. 新媒体运营胡耀文教程:短视频+怎么变现?一文读懂4大商业模式
  15. 在 Node.js 应用中集成 Redis
  16. 类的练习:定义一个Tree(树)类,有成员ages(树龄),成员函数grow(int years)对ages加上years,age()显示tree对象的ages的值。
  17. C++ free指针时的异常
  18. 题解 P2089 【烤鸡】
  19. Tensorflow 2.5 model.evaluate报错Invalid argument: required broadcastable shapes at loc(unknown)
  20. ELINK离线编程器常见问题

热门文章

  1. 图论新维度:数据驱动的数学理论,揭秘复杂联系的新工具
  2. java 遍历list并删除_Java遍历List并删除某些元素
  3. word中带圈的数字
  4. 2019年 8月23日 道家经典
  5. 四十六 这谁啊谁 我在软件园的那些日子里
  6. CC2652R ZigBee OTA 调试记录 改为支持 AT25DF041B 512KB flash
  7. python scrapy 入门_Python爬虫Scrapy入门看这篇就够了
  8. Ubantu 使用extundelete恢复数据
  9. 2021年场(厂)内专用机动车辆安全管理新版试题及场(厂)内专用机动车辆安全管理模拟考试题
  10. IntelliJ idea 配置文件ascii码转换