NC25828. 斑羚飞渡
描述
两个人之间只能有一个活着 ,这必然是我和你的战争——Harry Potter
水宝宝在看完《斑羚飞渡》这本书后,突发奇想,想到了一个有趣的问题
输入描述
输入格式:
第一行n,s 接下来n行,每行2个整数代表x[i],y[i]
输出描述
输出格式:
一行一个整数,表示有几只斑羚可以用别人的背当跳板跳到对岸
示例1
输入:
5 10 6 8 2 100 7 3 1 10 2 5
输出:
2
说明:
第一组是第三只斑羚跳6的距离,第一只斑羚跳6的距离后从第三只的背上起跳,再跳8的距离后到达对岸C++(g++ 7.5.0) 解法, 执行用时: 7ms, 内存消耗: 668K, 提交时间: 2022-11-25 11:15:08
#include<bits/stdc++.h> using namespace std; int i,j,k,n,s,S=0,L=0,R[1000005]; multiset<int>T; multiset<int>:: iterator t; int main() { scanf("%d%d",&n,&s); for(i=0;i<n;i++) { scanf("%d%d",&j,&k); if(j>=s)S++; else if(j+k<s)T.insert(j); else R[L++]=s-k; } for(i=j=0;i<L;i++) { t=T.lower_bound(R[i]); if(t!=T.end())S++,T.erase(t); else j++; } printf("%d\n",S+j/2); return 0; }