题目链接:https://vjudge.net/problem/TopCoder-14286

知识点:  组合数学、容斥原理

题目大意:

  给出 \(A,B,C\),问有多少个有序三元组 \((a,b,c)\),满足 \(a \le A,b \le B,c \le C\),并且长度为 \(a,b,c\) 的三条边能构成三角形。输出答案数模 \(1000000007\) 后的值。
  \(A,B,C \le 10^9\).
 
解题思路:
  答案等于 \(A \times B \times C\) 减去不能构成三角形的方案数。有三种不能构成三角形的对称的情况:
  \(a+b \le c, a+c \le b, b+c \le a\).
  现在先求解 \(a+b \le c\) 的情况,其他两种情况做类似处理即可。已知 \(c \le C\)。可以将 \(a +b \le c\) 表达成 \(a+b+x=c, 0 \le x\),将 \(c \le C\) 表达成 \(c+y=C, 0 \le y\)。则我们可以列出下式:
  \(a+b+x+y=C, 1 \le a,b, 0 \le x,y\)
  上式的解的个数即为满足 \(a+b \le c\) 的方案数,等价于将 \(C\) 分成 \(4\) 份(允许其中有两份为 \(0\))的方案数再利用容斥原理减去 \(a>A, b>B\) 的部分,具体的式子是
  \(C_{C+1}^{3}-C_{C-A+1}^{3}-C_{C-B+1}^{3}+C_{C-A-B+1}^{3}\).
 
AC代码:

 #include <cstdio>

 using namespace std;
typedef long long LL;
const LL mod=1e9+; class TriangleTriples{
public:
LL c3(LL a){
if(a<) return ;
return a*(a-)%mod*(a-)%mod*%mod;
}
LL solve(LL a,LL b,LL c){
return (c3(a+)-c3(a-b+)-c3(a-c+)+c3(a-b-c+)+mod)%mod;
} int count(int A, int B, int C){
LL a=A,b=B,c=C;
LL ans=a*b%mod*c%mod;
ans=(ans-solve(a,b,c)-solve(b,a,c)-solve(c,a,b))%mod;
ans+=mod;
ans%=mod;
return (int)ans;
}
};
  

TCO14286 TriangleTriples的更多相关文章

随机推荐

  1. Scala教程之:深入理解协变和逆变

    文章目录 函数的参数和返回值 可变类型的变异 在之前的文章中我们简单的介绍过scala中的协变和逆变,我们使用+ 来表示协变类型:使用-表示逆变类型:非转化类型不需要添加标记. 假如我们定义一个cla ...

  2. apache、nginx配置openssl自签名证书

    1.生成私钥 生成rsa私钥,des3算法,2048位强度.server.key是秘钥文件名,需要提供一个至少4位的密码. [root@localhost ~]# openssl genrsa -de ...

  3. shell基础知识DAY2

    1.管道符(|):把一个命令的输出,把输出的内容传递给管道符后面命令的输入.如:ls -l | grep "^[^d]".2.jobs作业控制,后台运行bg PID,前台运行fg ...

  4. Spring绑定请求参数过程以及使用@InitBinder来注册自己的属性处理器

    在工作中,经常会出现前台的请求参数由于无法被正常转型,导致请求无法进到后台的问题. 比如,我有一个User.其性别的属性被定义成了枚举,如下: public enum Gender { MALE(&q ...

  5. #Week1 Introduction

    一.What is Machine Learning 课程里主要给了两个供参考的定义: By Arthur Samuel: Field of study that gives computers th ...

  6. 图论--最短路--SPFA

    SPFA算法(shortest path faster algorithm)算法是西南交通大学段凡丁于1994年发表的,它在Bellman-ford算法的基础上进行了改进,使其在能够处理待负权图的单元 ...

  7. Docker docker-compose 配置lnmp开发环境

    1.安装docker yum -y install dockersystemctl start dockersystemctl enable docker 安装docker-compose https ...

  8. search(9)- elastic4s logback-appender

    前面写了个cassandra-appender,一个基于cassandra的logback插件.正是cassandra的分布式数据库属性才合适作为akka-cluster-sharding分布式应用的 ...

  9. Java——多线程之方法详解

    Java多线程系列文章是Java多线程的详解介绍,对多线程还不熟悉的同学可以先去看一下我的这篇博客Java基础系列3:多线程超详细总结,这篇博客从宏观层面介绍了多线程的整体概况,接下来的几篇文章是对多 ...

  10. 如何使用Golang实现一个API网关

    你是否也存在过这样的需求,想要公开一个接口到网络上.但是还得加点权限,否则被人乱调用就不好了.这个权限验证的过程,最好越简单越好,可能只是对比两个字符串相等就够了.一般情况下我们遇到这种需要,就是在函 ...