题目大意:

a,b,c三根木棍可以增加三个不同的数字,aa,bb,cc,且aa+bb+cc<=L,问能构成三角形的木棒有多少种方案

题目思路:

如果我们直接考虑把L分配给aa,bb,cc好像不好下手

所以逆向考虑

合法的情况  =  所有情况 - 不合法的情况

step1:

首先计算所有的情况

假设L当时为l

我们把长度为l分配去的总的方案

这个问题我们等效为:有三个篮子,每个篮子放至少一个个物品,总共l个物品,问有多少种方案


我们用插板法解决这个问题

因为每个篮子放至少一个,而我们的目标是可以放0个,怎么办呢?

我们可以增加几个物品使初始每个篮子中就有一个,这里假设有m个篮子,n个物品

那我们的物品个数变为n+m,这时候会产生n+m-1个隔板

然后我们要选出m部分来,也就是放m-1个隔板

此时的方案为C(n+m-1,m-1)

回到这个题目

此时长度为l时,方案为C(l+3-1,3-1)

然后我们枚举一遍l,求和算出总的方案

所以得到为l的时候方案为C(l+2,2)

step2:

求不合法的方案==

假设a+aa,b+bb,c+cc(aa,bb,cc分别为分配的增加的长度)

假设a+aa是那条最长的边

此时不合法需要满足如下条件:

b+bb+c+cc<=a+aa

bb+cc<=l-aa

bb+cc<=min(l-aa,a-b-c+aa)

令T=bb+cc

这个时候再进行一下问题转化

有T个物品,分配到三个篮子里(可以分配0个)

三个篮子分别是bb,cc和多余的部分

回到上面的插板法一样的解法C(t+3-1.3-1)

然后用总的减去不合法就ok了

CODE:

ll b,c,a,l;
int main() {
a=read(),b=read(),c=read(),l=read();
ll zong = (l+1)*(l+2)*(l+3)/6ll;
ll no;
for(int aa=0 ; aa<=l ; aa++) {
ll t = min(l-aa,a-b-c+aa);
if(t<0) continue;
no = (t+2)*(t+1)/2ll;
zong-=no;
}
for(int bb=0 ; bb<=l ; bb++) {
ll t = min(l-bb,b-a-c+bb);
if(t<0) continue;
no = (t+2)*(t+1)/2ll;
zong-=no;
}
for(int cc=0 ; cc<=l ; cc++) {
ll t = min(l-cc,c-b-a+cc);
if(t<0) continue;
no = (t+2)*(t+1)/2ll;
zong-=no;
}
out(zong);
return 0;
}

CodeForces571A. Lengthening Sticks(组合数学-容斥)的更多相关文章

  1. CF 317 A. Lengthening Sticks(容斥+组合数学)

    传送门:点我 A. Lengthening Sticks  time limit per test        1 second You are given three sticks with po ...

  2. HDU 6397 Character Encoding (组合数学 + 容斥)

    题意: 析:首先很容易可以看出来使用FFT是能够做的,但是时间上一定会TLE的,可以使用公式化简,最后能够化简到最简单的模式. 其实考虑使用组合数学,如果这个 xi 没有限制,那么就是求 x1 + x ...

  3. [CSP-S模拟测试]:多维网格(组合数学+容斥)

    题目传送门(内部题138) 输入格式 输入数据第一行为两个整数$d,n$. 第二行$d$个非负整数$a_1,a_2,...,a_d$.     接下来$n$行,每行$d$个整数,表示一个坏点的坐标.数 ...

  4. [BZOJ2839]:集合计数(组合数学+容斥)

    题目传送门 题目描述 .(是质数喔~) 输入格式 一行两个整数N,K. 输出格式 一行为答案. 样例 样例输入: 3 2 样例输出: 样例说明 假设原集合为{A,B,C} 则满足条件的方案为:{AB, ...

  5. 【XSY2990】树 组合数学 容斥

    题目描述 同 Comb Avoiding Trees 不过只用求一项. \(n,k\leq {10}^7\) 题解 不难发现一棵 \(n\) 个叶子的树唯一对应了一个长度为 \(2n-2\) 的括号序 ...

  6. 2019.02.11 bzoj4767: 两双手(组合数学+容斥dp)

    传送门 题意简述:你要从(0,0)(0,0)(0,0)走到(ex,ey)(ex,ey)(ex,ey),每次可以从(x,y)(x,y)(x,y)走到(x+ax,y+ay)(x+ax,y+ay)(x+ax ...

  7. BZOJ4710: [Jsoi2011]分特产【组合数学+容斥】

    Description JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同学,一共有多少种不同的分法?当然,JYY 不希望 ...

  8. HDU 6397 组合数学+容斥 母函数

    Character Encoding Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Oth ...

  9. codeforces 571A--Lengthening Sticks(组合+容斥)

    A. Lengthening Sticks time limit per test 1 second memory limit per test 256 megabytes input standar ...

随机推荐

  1. how to auto open a url in the browser by using terminal

    how to auto open a url in the browser by using terminal Linux / MacOS # bash / zsh $ open http://loc ...

  2. auto scroll bottom in js

    auto scroll bottom in js autoScrollToBottom() { let box = document.querySelector(`[data-dom="ch ...

  3. taro defaultProps

    taro defaultProps https://nervjs.github.io/taro/docs/best-practice.html#给组件设置-defaultprops import Ta ...

  4. XML & XPath & XQuery

    XML & XPath & XQuery full XPath demo https://www.w3.org/TR/xpath-full-text-30/ https://www.w ...

  5. 一文助你了解NGK商城

    按照NGK的发展逻辑,将会在2021年上半年上线链商商城,解决传统消费行业真伪难辨的弊端,之后,将会推出小额支付功能,让NGK真正成为结算中的数字资产,目前两者落地性应用已经在开发内测阶段中,期初的部 ...

  6. nvidia-smi command not found Ubuntu 16.04

    issue:     nvidia-smi command not found Ubuntu 16.04 https://askubuntu.com/questions/902636/nvidia-s ...

  7. Python爬虫_百度贴吧(title、url、image_url)

    本爬虫以百度贴吧为例,爬取某个贴吧的[所有发言]以及对应发言详情中的[图片链接] 涉及: request 发送请求获取响应 html 取消注释 通过xpath提取数据 数据保存 思路: 由于各贴吧发言 ...

  8. JAVA 8 新特性实用总JAVA 8 新特性实用总结结

    JAVA 8 新特性实用总结 作为一个工作两年多的 老 程序猿,虽然一开始就使用 jdk1.8 作为学习和使用的版本,随着技术的迭代,现有的 JDK 版本从两年前到现在,已经飞速发展到了 JDK 15 ...

  9. JavaScriptBOM操作

    BOM(浏览器对象模型)主要用于管理浏览器窗口,它提供了大量独立的.可以与浏览器窗口进行互动的功能,这些功能与任何网页内容无关.浏览器窗口的window对象是BOM的顶层对象,其他对象都是该对象的子对 ...

  10. SpringBoot整合Mongodb4.0

    本品文章只做学习使用: 安装mongodb推荐博客:https://www.jianshu.com/p/a75e26e5f635 1:如何在外网环境下开放mongodb 服务器版本:centos7.6 ...