牛客小白月赛15A 斑羚飞渡
链接:https://ac.nowcoder.com/acm/contest/917/A
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
题目背景
两个人之间只能有一个活着 ,这必然是我和你的战争——Harry Potter
题目描述
水宝宝在看完《斑羚飞渡》这本书后,突发奇想,想到了一个有趣的问题
输入描述:
输入格式: 第一行n,s 接下来n行,每行2个整数代表x[i],y[i]
输出描述:
输出格式: 一行一个整数,表示有几只斑羚可以用别人的背当跳板跳到对岸
输入
复制
5 10 6 8 2 100 7 3 1 10 2 5
输出
复制
2
说明
第一组是第三只斑羚跳6的距离,第一只斑羚跳6的距离后从第三只的背上起跳,再跳8的距离后到达对岸 第二组是第五只跳2的距离,第二只跳2的距离后从第五只的背上起跳,跳100的距离到达对岸(假设对岸无限长,不可能跳出对岸)
备注:
对于100%的数据,n<=1000000; 对于所有数据,s<=1000000000; x[i],y[i]<=s; 不保证x[i]<y[i] 思路:把羚羊分为三批,第一批是自己就能跳过去的,第二批是需要别人帮助能跳过去的,第三批是即使别人帮助了也跳不过去的(只能作为踏板或者被抛弃的,枯了)不用说第一批了,跳过去就完事了。第二批,需要第三批或者第二批自己内部来帮助,然后就排个序吧。这时候考虑到第二批需要第三批羊帮助的底线是啥,起码第三批羊跳的范围满足x[j] >= s-y[i]吧,这样就能踩着他跳过去啦比如说2 13 1 12 4 3 第一只就能踩着满足x[j] >= 13-12=1 的羊 跳过去。这就是第二种情况:对当踏板的羊和要跳过去的羊分别排个序,从小到大取过去就行。第三种情况也简单,第三批用不完的(工具人实锤了)直接被淘汰了。第二批羊没了当踏板的羊,那就老老实实内部互相“帮助”吧,把剩下的除以二就行。代码:
#include<bits/stdc++.h> using namespace std; #define LL long long #define INF 2000000000 #define eps 1e-8 #define pi 3.141592653589793 const LL mod = 1e9+7; vector<pair<int,int> >v1,v2; int main() {int n,s;int sum1 = 0,sum2 = 0,sum3 = 0;//sum1 自己本来就过得去的,sum2需要跟过不去的配合的,sum3两只能过得去的相互配合scanf("%d %d",&n,&s);for(int i = 0 ; i < n ; i++){int x,y;scanf("%d%d",&x,&y);if(x>=s)sum1++;else{pair<int,int>pii = make_pair(x,y);if(x+y >= s){v1.push_back(pii);}else{v2.push_back(pii);}}}sort(v1.begin(),v1.end());sort(v2.begin(),v2.end());if(!v2.empty()){for(int i = 0 ; i < v1.size() ; i++){int z = s - (v1[i].second);for(vector<pair<int,int> >::iterator it = v2.begin();it!=v2.end();it++){int x_j = it->first;if(x_j >= z){sum2++;v2.erase(it);break;}}if(v2.empty()){break;}}}int last_v1 = v1.size() - sum2;if(last_v1 <= 0){return printf("%d\n",sum1+sum2),0;}//有机会跳过去的羊没剩余了else{sum3 = last_v1/2;return printf("%d\n",sum1+sum2+sum3),0;} }
转载于:https://www.cnblogs.com/Esquecer/p/11025757.html
牛客小白月赛15A 斑羚飞渡相关推荐
- 牛客网 — [牛客小白月赛15]斑羚飞渡(贪心)
题目链接:https://ac.nowcoder.com/acm/contest/917/A 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K 6 ...
- 牛客小白月赛16 小石的签到题(博弈)
牛客小白月赛16 小石的签到题 链接:https://ac.nowcoder.com/acm/contest/949/A来源:牛客网 题目描述 输入描述: 共一行,输入一个数 nnn . 输出描述: ...
- F.孤独(牛客小白月赛39)
F.孤独(牛客小白月赛39) 题意: 给定一棵树,寻找一个路径,将断掉所有与这个路径上的点相连的边,使得剩下的最大连通块的大小最小 题解: 这题有点印象,感觉做过,至少这个方法肯定遇到过 设dp[u] ...
- 牛客小白月赛58 B(暴力)C(思维)D(dp滚动数组优化)
牛客小白月赛58 感觉没什么意思,这场月赛出题人有点问题. B 题意:给定一定的数据填充顺序和每一个填充层的名称,只有填充满了上一层才可以填充下一层. 但是每一层又属于某一个大层,一个大层中包含了若干 ...
- 牛客小白月赛65个人题解A-E
1. 牛客小白月赛65 A. 牛牛去购物 题意:给定n元,购买价格为a元的篮球和价格为b的篮球,数量不定,要使得花掉的钱最多,也就是剩余的钱数最少,求这个值 (1 <= n, a, b < ...
- 牛客小白月赛24 J.建设道路
牛客小白月赛24 J.建设道路 题目链接 题目描述 牛牛国有 nnn 个城市,编号为 1-n,第 iii 个城市有一个价值 aia_iai ,牛国的国王牛阔落特别喜欢在牛牛国旅游,并且他不想每次旅游 ...
- 牛客小白月赛4 D.郊区春游
牛客小白月赛4 D.郊区春游 题目链接 题目描述 今天春天铁子的班上组织了一场春游,在铁子的城市里有 nnn 个郊区和 mmm 条无向道路,第 iii 条道路连接郊区 AiA_iAi 和 BiB_i ...
- 牛客小白月赛25 C.白魔法师
牛客小白月赛25 C.白魔法师 题目链接 题目描述 你是一个白魔法师. 现在你拿到了一棵树,树上有 个点,每个点被染成了黑色或白色. 你可以释放一次魔法,将某个点染成白色.(该点不一定是黑色点,也可以 ...
- 牛客小白月赛60(A~C)题解
原题地址:牛客小白月赛60_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 题目A:小竹与妈妈 题意:输出(x-b)/a即可,没什么好说 代码: #include< ...
最新文章
- XHTML+CSS3(Chapter 1)
- json_decode的结果是null
- LCS2005客户端配置详解:LCS2005系列之二
- ZooKeeper安装配置
- 基于Spring Boot的“课程设计”的设计与实现
- httpd开启status模块_开启Apache Server Status
- d3.js 入门指南 - 仪表盘
- Educational Codeforces Round 72 (Rated for Div. 2) D. Coloring Edges dfs树/拓扑找环
- 一种简单好用的Vue表单验证
- Spark代码生成技术之现象CodeGenerator
- linux下NFS、FTP使用讲解
- vi 快捷方式 手册
- 电容麦克风测试软件,章和电气AudioExpress麦克风测试解决方案———您的音频测试专家...
- 外卖类应用的竞争与发展分析
- 每日技巧分享:怎么裁剪音频,快学习起来
- 转:稻盛和夫:在软弱的领导人手下工作,是可悲的
- web前端期末大作业 html+css+javascript网页设计实例 企业网站制作 (绿色植物网站设计)
- 服务机器人常用的定位导航技术及优缺点分析
- 用html实现满屋花的网页
- 树莓派4B与Android之缘——树莓派下LineageOS(Android 9)系统开机联网与远程控制
热门文章
- mybatis返回数据类型为map,值为null的key没返回
- 基于Android的聊天软件的设计与实现-一个聊天软件开发起来没那么难不是?
- fvm切换多个Flutter版本
- 【App开发】有语音播报功能的摇号软件:演示视频、开发历程
- linux中.log文件是什么,linux 下log文件夹简介
- 什么是泛型?为什么需要泛型?杠精泛型
- Elasticsearch 集群部署
- FAT文件系统原理(转载)
- 虚拟环境工具pyenv的安装,配置和使用,完美控制python版本
- 适合初学者的强化学习教程(1): python使用gym实践和注意事项