Codeforces Round #643 (Div. 2) C. Count Triangles

C. Count Triangles

题目链接-C. Count Triangles
在这里插入图片描述
在这里插入图片描述
题目大意
给你四个数 A , B , C , D A,B,C,D ABCD,求有多少个三边为 x , y , z ( A ≤ x ≤ B ≤ y ≤ C ≤ z ≤ D ) x,y,z (A ≤ x ≤ B ≤ y ≤ C ≤ z ≤ D) xyzAxByCzD的三角形

解题思路
组 合 数 学 组合数学

  • 若枚举 x , y , z x,y,z x,y,z的值肯定是会超时的,所以我们可以枚举满足条件的 x + y x+y x+y的值
  • 若想能 x , y , z x,y,z x,y,z组成三角形,那么需要 x + y > z x+y>z x+y>z, 又 z ∈ [ C , D ] z∈[C,D] z[C,D],所以 ( x + y ) m i n > C (x+y)_{min}>C (x+y)min>C
  • 因为 x ∈ [ A , B ] x∈[A,B] x[A,B] y ∈ [ B , C ] y∈[B,C] y[B,C],又 ( x + y ) m i n > C (x+y)_{min}>C (x+y)min>C,所以 ( x + y ) m i n = m a x ( A + B , C + 1 ) (x+y)_{min}=max(A+B,C+1) (x+y)min=max(A+B,C+1),易得 x + y ∈ [ m a x ( A + B , C + 1 ) , B + C ] x+y∈[max(A+B,C+1),B+C] x+y[max(A+B,C+1),B+C]
  • 然后for循环枚举可行的 x + y x+y x+y值,对于每个 i i i,满足条件的 z z z值范围为 [ C , i − 1 ] [C,i-1] [C,i1],又因为 z m a x = D z_{max}=D zmax=D,所以可取 z z z的个数为min(D,i-1)-C+1,即min(D+1,i)-C
  • 因为 x + y = i x+y=i x+y=i,确定了其中一个数的值,另一个数的也就确定了,所以我们可以求出对于每个 i i i,可取 x x x值的个数,即是满足x+y==i x , y x,y x,y对数
  • 容易看出 x x x的变化范围为 [ i − C , i − B ] [i-C,i-B] [iC,iB],不过 x x x还需要在 [ A , B ] [A,B] [A,B]之内,取相交区间就行了,所以 x ∈ [ m a x ( i − C , A ) , m i n ( i − B , B ) ] x∈[max(i−C,A),min(i−B,B)] x[max(iC,A),min(iB,B)],所以满足 x + y = i x+y=i x+y=i x , y x,y x,y对数就为 m i n ( i − B , B ) − m a x ( i − C , A ) + 1 min(i-B,B)-max(i-C,A)+1 min(iB,B)max(iC,A)+1
  • 根据乘法原理,可以可得对于当前 i i i满足条件的 x , y , z x,y,z x,y,z组数为min(D+1,i)-C*min(i-B,B)-max(i-C,A)+1,即可得到答案

附上代码

#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
#define int long long
#define lowbit(x) (x &(-x))
#define endl '\n'
using namespace std;
const int INF=0x3f3f3f3f;
const int dir[4][2]={-1,0,1,0,0,-1,0,1};
const double PI=acos(-1.0);
const double e=exp(1.0);
const double eps=1e-10;
const int M=1e9+7;
const int N=2e5+10;
typedef long long ll;
typedef pair<int,int> PII;
typedef unsigned long long ull;
inline void read(int &x){
    char t=getchar();
    while(!isdigit(t)) t=getchar();
    for(x=t^48,t=getchar();isdigit(t);t=getchar()) x=x*10+(t^48);
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);

	int a,b,c,d,ans=0;
	cin>>a>>b>>c>>d;
	for(int i=max(c+1,a+b);i<=b+c;i++)
		ans+=(min(d+1,i)-c)*(min(i-b,b)-max(i-c,a)+1);
	cout<<ans<<endl;
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园信息化系统解决方案旨在通过先进的信息技术,实现教育的全方位创新和优质资源的普及共享。该方案依据国家和地方政策背景,如教育部《教育信息化“十三五”规划》和《教育信息化十年发展规划》,以信息技术的革命性影响为指导,推进教育信息化建设,实现教育思想和方法的创新。 技术发展为智慧校园建设提供了强有力的支撑。方案涵盖了互连互通、优质资源共享、宽带网络、移动APP、电子书包、电子教学白板、3D打印、VR虚拟教学等技术应用,以及大数据和云计算技术,提升了教学数据记录和分析水平。此外,教育资源公共服务平台、教育管理公共服务平台等平台建设,进一步提高了教学、管控的效率。 智慧校园系统由智慧教学、智慧管控和智慧办公三大部分组成,各自具有丰富的应用场景。智慧教学包括微课、公开课、精品课等教学资源的整合和共享,支持在线编辑、录播资源、教学分析等功能。智慧管控则通过平安校园、可视对讲、紧急求助、视频监控等手段,保障校园安全。智慧办公则利用远程视讯、无纸化会议、数字会议等技术,提高行政效率和会议质量。 教育录播系统作为智慧校园的重要组成部分,提供了一套满足学校和教育局需求的解决方案。它包括标准课室、微格课室、精品课室等,通过自动五机位方案、高保真音频采集、一键式录课等功能,实现了优质教学资源的录制和共享。此外,录播系统还包括互动教学、录播班班通、教育中控、校园广播等应用,促进了教育资源的均衡化发展。 智慧办公的另一重点是无纸化会议和数字会议系统的建设,它们通过高效的文件管理、会议文件保密处理、本地会议的音频传输和摄像跟踪等功能,实现了会议的高效化和集中管控。这些系统不仅提高了会议的效率和质量,还通过一键管控、无线管控等设计,简化了操作流程,使得会议更加便捷和环保。 总之,智慧校园信息化系统解决方案通过整合先进的信息技术和教学资源,不仅提升了教育质量和管理效率,还为实现教育均衡化和资源共享提供了有力支持,推动了教育现代化的进程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值