首页 > 其他分享 >AT3620 题解

AT3620 题解

时间:2022-08-25 00:23:09浏览次数:76  
标签:二分 include int 题解 读入 排序 AT3620

题目传送门

做题的第一件事就是看范围。

注意到范围,想到应该要使用 \(O(n\times \log n)\) 的办法。

进而联想到排序与二分

事实证明的确要使用排序与二分。

不说废话,我的思路是读入时顺便给三个数组排序,当然是从小到大。

然后,我们枚举第二个数组。

为什么枚举第二个呢?

因为它和另外两个都有直接的大小关系,可以帮助我们卡范围

利用算法库自带的二分函数,来算出上中与中下的范围。

再利用加乘原理即可。

送上满分代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
#define N (int)(1e5 + 5)
using namespace std;
int n, a[N], b[N], c[N];
void QwQ(int x[])  //作用:读入并排序。 
{
	for (int i = 1; i <= n; i++) scanf("%d", &x[i]);
	sort(x+1, x+n+1);
}
int main()
{
	//以下四行读入。 
	scanf("%d", &n);
	QwQ(a);
	QwQ(b);
	QwQ(c);
	//下面就是重点代码,注意 sum 的所使用的数据范围。 
	long long sum = 0; 
	for (int i = 1; i <= n; i++)
	{
		long long cntA = lower_bound(a+1, a+n+1, b[i]) - a - 1;
		long long cntC = upper_bound(c+1, c+n+1, b[i]) - c - 1;
		cntC = n - cntC;  //上面的得出的是起始位置,还要卡范围。 
		sum += (cntA * cntC);  //加乘原理。 
	}
	printf("%lld", sum);
	return 0;
}

2022-02-04 21:46:43

标签:二分,include,int,题解,读入,排序,AT3620
From: https://www.cnblogs.com/liangbowen/p/16622797.html

相关文章

  • AT3525 题解
    题目传送门小学生又双叒叕来写题解啦!翻了一下大家的思路,怎么都一样?当数量达到\(10^7\)时,题解代码全爆掉!你问为什么,时间效率\(O(n)\)不稳过吗?对,可是空间复杂度呢,显......
  • AT2586 题解
    题目传送门许多人使用栈,然而根本不需要。先读入整个字符串,然后枚举每个字符。如果当前字符是左括号,往后搜,有就匹配并消除。然而消除这个动作太慢了,如果匹配到,只需把它......
  • AT4276 题解
    小学生又来写题解啦!容易想到,范围内七五三数不会很多,因此尝试暴力搜索,即深搜。参数除了当前的数外,还有三个布尔类型的变量分别表示三、五、七有无出现。每次都判断是否为......
  • P8080 题解
    题目传送门小学生又来写题解啦!你可能会认为,能够使用杯座人数的最大值,就是杯座数量。但结合样例一,若杯座数量大于总人数,只能输出总人数。下一个问题是如何计算杯座数量......
  • SP1163 题解
    题目传送门小学生又来写题解啦!本题显然是字符串模拟,认真维护好每个要求即可。首先先判断是情况一还是情况二,如果同时出现,输出报错信息。我们可以用一个函数实现上述功......
  • CF483A 题解
    题目传送门小学生又来写题解啦!刚看到范围,觉得不能枚举。仔细想一下,其实可以,因为第一组解应该离左边界较近,很快可以出答案。所以,我们可以尝试暴力枚举。最大公约数就用......
  • AT278 题解
    题目传送门小学生又双叒叕来写题解啦!我的思路是,先统计招牌与材料包中不同字母的数量。然后,枚举二十六个字母。对于每个字母,用招牌字母数除以材料包字母数,再向上取整。......
  • AT212 题解
    题目传送门小学生又双叒叕来写题解啦!翻了一下大家的代码,都好长好复杂,其实直接模拟就好了。先说一个巨坑:发现坐标与我们平时不同,所以进行修改。写一个函数,函数作用为找......
  • AT1578 题解
    题目传送门小学生又双叒叕来写题解啦!个人认为这题就考你的理解能力,因此,得先把题读懂。寿司就是01或10字符的组合,减少拆开寿司的次数,本质上就是保留完整的寿司。因......
  • AT4864 题解
    题目传送门显然是贪心题。对于每张优惠券,我们应该给当前最大的物品使用。如果使用普通的数组,每次都找最大值太慢了。因此,我们使用传说神器:优先队列。其他题解都没有说......