洛谷 AT2561 题解

洛谷题目传送门 | AT 原题传送门

思路

桶的思想。

用数组 tt 存储 aa 出现的次数,然后循环,用 kk 减每个数出现的次数,看在哪个数时满足 k0k \leq 0 的条件,直接输出这个数的下标即可。

注意不开 long long\texttt{long long} 见祖宗

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<cstdio>
#include<iostream>
#define ll long long
using namespace std;
ll n,k,a,b;
ll t[100010],ans=0;
int main()
{
scanf("%lld%lld",&n,&k);
for(int i=1;i<=n;i++)
{
scanf("%lld%lld",&a,&b);
t[a]+=b;//t为桶,增加a的个数
}
while(k>0)//当k<=0时跳出循环
{
k-=t[++ans];//每次k自减t[++ans]
}
printf("%lld\n",ans);
return 0;
}


洛谷 AT2561 题解
https://blog.makerlife.top/post/solution-AT2561/
作者
Makerlife
发布于
2022年2月7日
许可协议