ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Codeforces 1355-C. Count Triangles

2020-05-16 21:58:34  阅读:446  来源: 互联网

标签:Count qq pp ll Codeforces 等差数列 ans 三角形 Triangles


传送门:http://codeforces.com/contest/1355/problem/C

题意:给你四个数A,B,C,D,求有多少个三边为x,y,z (A ≤ x ≤ B ≤ y ≤ C ≤ z ≤ D)的三角形。

题解:枚举 x=A~B,然后计算当z的值大于等于C时,y为最小值B可以有多少个三角形,y为最大值C有多少个三角形。想想就可以发现 y=B~C时 其实就是一个差值为1的等差数列。然后要算出 y=B 和 y=C 时 z 比最大值D大了多少,这也是个等差数列,然后两个等差数列做差就好了。这么说可能有点乱,代码看了就明白了。

 1 #include<bits/stdc++.h>
 2 #define ll long long
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     ios::sync_with_stdio(false);
 8     cin.tie(0);
 9     cout.tie(0);
10     ll a,b,c,d;
11     cin>>a>>b>>c>>d;
12     ll ans=0;
13     for(ll i=a;i<=b;i++){
14         ll p=i+b-1;
15         ll q=i+c-1;
16         ll x=0,y=0,pp=0,qq=0;
17         if(p>=c) x=p-c+1;
18         if(q>=c) y=q-c+1;
19         if(p>d) pp=p-d;
20         if(q>d) qq=q-d;
21         ans=ans+(x+y)*abs(y-x+1)/2;
22         ans=ans-(pp+qq)*abs(qq-pp+1)/2;
23     }
24     cout<<ans<<endl;
25     return 0;
26 }

标签:Count,qq,pp,ll,Codeforces,等差数列,ans,三角形,Triangles
来源: https://www.cnblogs.com/lilibuxiangtle/p/12902331.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有