题目大意:

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:

  1. ll b,c,a,l;
  2. int main() {
  3. a=read(),b=read(),c=read(),l=read();
  4. ll zong = (l+1)*(l+2)*(l+3)/6ll;
  5. ll no;
  6. for(int aa=0 ; aa<=l ; aa++) {
  7. ll t = min(l-aa,a-b-c+aa);
  8. if(t<0) continue;
  9. no = (t+2)*(t+1)/2ll;
  10. zong-=no;
  11. }
  12. for(int bb=0 ; bb<=l ; bb++) {
  13. ll t = min(l-bb,b-a-c+bb);
  14. if(t<0) continue;
  15. no = (t+2)*(t+1)/2ll;
  16. zong-=no;
  17. }
  18. for(int cc=0 ; cc<=l ; cc++) {
  19. ll t = min(l-cc,c-b-a+cc);
  20. if(t<0) continue;
  21. no = (t+2)*(t+1)/2ll;
  22. zong-=no;
  23. }
  24. out(zong);
  25. return 0;
  26. }

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. javascript & call & apply & bind & new

    javascript & call & apply & bind & new Javascript call() & apply() vs bind()? ht ...

  2. cookie & maxAge & expires

    cookie & maxAge & expires Expires (timestamp) & Max-Age (seconds) https://developer.mozi ...

  3. components & slot

    components & slot vue https://github.com/vuejs/rfcs/blob/master/active-rfcs/0001-new-slot-syntax ...

  4. React Hooks & React v16.8.6

    React Hooks Hooks are a new addition in React 16.8 const [state, setState] = useState(initialState); ...

  5. yarn create & npx & npm init

    yarn create & npx & npm init https://www.npmtrends.com/npm-vs-npx-vs-yarn demo https://www.n ...

  6. H5 & animation

    H5 & animation https://m.tb.cn/h.VYB7BAx?sm=51fda6 UA checker webp image & css animation CDN ...

  7. DeFi里的灰度?每月获得高收益?BGV代币初探

    2020年已经接近了尾声,但是DeFi市场的热闹场面并没有停止,或者说,一直在延续.资本市场不断将大批的资金投入到DeFi市场中,以求在这波热潮中赚得一波又一波红利. 美国时间12月21日,Bacca ...

  8. (十一) 数据库查询处理之连接(Join)

    (十一) 数据库查询处理之连接(Join) 1. 连接操作的一个例子 把外层关系和内层关系中满足一定关系的属性值拼接成一个新的元组 一种现在仍然十分有用的优化思路Late Materializatio ...

  9. 你真的了解URLEncode吗?

    使用浏览器进行Http网络请求时,若请求query中包含中文,中文会被编码为 %+16进制+16进制形式,但你真的深入了解过,为什么要进行这种转义编码吗?编码的原理又是什么? 例如,浏览器中进行百度搜 ...

  10. es初步搭建

    1.es tar包传至linux上 并解压 tar -zxvf elasticsearch-7.4.0-linux-x86_64.tar.gz 2.新建用户 useradd xxxname passw ...