蓝桥杯2018第九届C语言B组省赛习题题解——习题F.递增三元组*

每日刷题(四十九)

蓝桥杯第九届C语言B组省赛习题

习题F:递增三元组

在这里插入图片描述
在这里插入图片描述
这个题不应该用暴力破解法,应该以b数组的n个元素来循环,具体分析如图:
在这里插入图片描述
每次循环就在原来的p、q基础上修改增加,A中满足的会越来越多,C中满足的会越来越少,用ans记录所有的满足条件的三元组(i,j,k)

详细C代码如下:

#include<stdio.h>

int n;

void sort(int a[])
{
	int i, j;
	int t = 0;
	for(i = 0; i < n - 1; i++)
	{
		for(j = i + 1; j < n; j++)
		{
			if(a[i] > a[j])
			{
				t = a[i];
				a[i] = a[j];
				a[j] = t;
			}
		}
	}
}

int main()
{
	scanf("%d", &n);
	int a[n], b[n], c[n];
	int i;
	for(i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
	}
	for(i = 0; i < n; i++)
	{
		scanf("%d", &b[i]);
	}
	for(i = 0; i < n; i++)
	{
		scanf("%d", &c[i]);
	}
	
	sort(a);
	sort(b);
	sort(c);
	
	int ans = 0;
	int p = 0;
	int q = 0;
	for(i = 0; i < n; i++)
	{
		while(p < n && a[p] < b[i])
			p++;
		while(q < n && c[q] <= b[i])
			q++;
		ans += p * (n - q);
	}
	
	printf("%d\n", ans);
	
	return 0;
}

样例运行结果如下:
在这里插入图片描述

如果喜欢我的文章,请记得三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持,下期更精彩!!!

发布了99 篇原创文章 · 获赞 16 · 访问量 5905

猜你喜欢

转载自blog.csdn.net/qq_44631615/article/details/105179962