伐木机不要石头!!!

伐木机不要石头!!!(easy version)

本题有对应的hard version,区别仅在多次询问中。保证easy version的测试用例集是hard version的真子集,通过困难版本的代码经过简单修改可直接通过简单版

看着家里贫瘠的资源,是时候出发采点木头了!可你突然发现家里没石头,连伐木机都造不好……于是,可露希尔替你发明了无敌手斧,只要木头!可是他的耐久度只有 1,使用完该手斧砍伐掉一棵树之后,该手斧将损坏无法继续使用,也就是一个无敌手斧只能砍一棵树。现在你已经拥有了大量的无敌手斧,信心百倍的进入了林区。你面前是 n棵排成一列的树,每棵树的坚硬程度为 ai,第一棵树的位置位于 1号点,第二棵位于 2号依次类推,直到第 n棵树。而你背包里的无敌手斧有 m个,每个的破坏程度为 bj,当一个无敌手斧的破坏程度不小于一棵树的坚硬程度时,无敌手斧可以将这棵树砍倒,砍倒后你就可以拿走这棵树的木材。那聪明的博士就会想了:如果博士想使用无敌手斧砍伐位置在 1到 n 这段区域内的树木,最多可以带走多少棵树的木材呢?

输入描述:第一行输入二个数 n,m 别表示树的棵数,无敌手斧的个数。 第二行输入 n个数 ai, 表示第 i棵树的坚硬程度。 第三行输入 m个数 bj, 表示第 j 个无敌手斧的破坏程度。 数据保证 1≤n,m≤10^5,1≤ai​≤10^9,1≤bj≤10^9。
输出描述:输出一行非负整数,代表可拿走多少棵树的木材。

输入

5 5
1 2 3 4 5
1 1 4 4 5
输出:4
说明:第 1 棵树可以匹配上第 1个手斧。第 2棵树可以匹配上第 3个手斧。第 4棵树可以匹配上第 4个手斧。第 5棵树可以匹配上第 5个手斧。所以答案为 4。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int sum, n, m, a[N], b[N];
int main() {
     ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	cin >> n >> m;
	for (int i = 1; i <= n; i++) cin >> a[i];
	for (int j = 1; j <= m; j++) cin >> b[j];
	sort(a + 1, a + n + 1);
	sort(b + 1, b + m + 1);
	for (int i = 1, j = 1; i <= n && j <= m; i++) {
		while (j <= m && i <= n && a[i] > b[j]) j++;
		if (j <= m && i <= n) {
			sum++;
			j++;
		}
	}
	cout << sum;
	return 0;
}

ios::sync_with_stdio(0)cin.tie(0)cout.tie(0)是为了关闭标准IO与Cstdio之间的同步,提高输入输出效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

筱姌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值