欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Codeforces 1355 C. Count Triangles

程序员文章站 2022-07-15 16:08:37
...

Codeforces 1355 C. Count Triangles

题意:

给你四个数 ABCDA,B,C,D,求有多少个三边为 xyzAxByCzDx,y,z (A ≤ x ≤ B ≤ y ≤ C ≤ z ≤ D) 的三角形。
枚举 xx ,然后判断有多少步满足的,最后减去就是吗,满足的。
具体看代码吧,就是细节需要注意。

AC代码:

int a, b, c, d;
ll ans;

int main()
{
	int t;
	sdd(a, b);
	sdd(c, d);
	ans = 0;
	rep(x, a, b)
	{
		int ymin = c - x;
		int zmin = c;
		if (ymin > b)
			ans += 1ll * (ymin - b) * (d - c + 1);
		else
		{
			ymin = b;
			zmin = b + x;
		}
		if (zmin > d)
			continue;
		int cy = c - ymin + 1;
		int cz = d - zmin + 1;
		if (cy >= cz)
			ans += 1ll * (1 + cz) * cz / 2;
		else
			ans += 1ll * (cz + cz - cy + 1) * cy / 2;
	}
	ans = 1ll * (b - a + 1) * (c - b + 1) * (d - c + 1) - ans;
	pld(ans);
	return 0;
}
相关标签: CodeForces