CodeForces571A. Lengthening Sticks(组合数学-容斥)
题目大意:
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(组合数学-容斥)的更多相关文章
- CF 317 A. Lengthening Sticks(容斥+组合数学)
传送门:点我 A. Lengthening Sticks time limit per test 1 second You are given three sticks with po ...
- HDU 6397 Character Encoding (组合数学 + 容斥)
题意: 析:首先很容易可以看出来使用FFT是能够做的,但是时间上一定会TLE的,可以使用公式化简,最后能够化简到最简单的模式. 其实考虑使用组合数学,如果这个 xi 没有限制,那么就是求 x1 + x ...
- [CSP-S模拟测试]:多维网格(组合数学+容斥)
题目传送门(内部题138) 输入格式 输入数据第一行为两个整数$d,n$. 第二行$d$个非负整数$a_1,a_2,...,a_d$. 接下来$n$行,每行$d$个整数,表示一个坏点的坐标.数 ...
- [BZOJ2839]:集合计数(组合数学+容斥)
题目传送门 题目描述 .(是质数喔~) 输入格式 一行两个整数N,K. 输出格式 一行为答案. 样例 样例输入: 3 2 样例输出: 样例说明 假设原集合为{A,B,C} 则满足条件的方案为:{AB, ...
- 【XSY2990】树 组合数学 容斥
题目描述 同 Comb Avoiding Trees 不过只用求一项. \(n,k\leq {10}^7\) 题解 不难发现一棵 \(n\) 个叶子的树唯一对应了一个长度为 \(2n-2\) 的括号序 ...
- 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 ...
- BZOJ4710: [Jsoi2011]分特产【组合数学+容斥】
Description JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同学,一共有多少种不同的分法?当然,JYY 不希望 ...
- HDU 6397 组合数学+容斥 母函数
Character Encoding Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Oth ...
- codeforces 571A--Lengthening Sticks(组合+容斥)
A. Lengthening Sticks time limit per test 1 second memory limit per test 256 megabytes input standar ...
随机推荐
- Learning CSS with Chrome DevTools
Learning CSS with Chrome DevTools CSS 复合属性展开 border background box-shadow flex-flow flex HTML5 custo ...
- API protocols All In One
API protocols All In One SOAP vs. REST vs. JSON-RPC vs. gRPC vs. GraphQL vs. Thrift https://www.mert ...
- keepalived-1.3.5+MHA部署mysql集群
MHA: MHA工作原理总结为以下几条: 从宕机崩溃的master保存二进制日志事件(binlog events): 识别含有最新更新的slave: 应用差异的中继日志(relay log)到其他sl ...
- Java如何保证文件落盘?
本文转载自Java如何保证文件落盘? 导语 在之前的文章Linux/UNIX编程如何保证文件落盘中,我们聊了从应用到操作系统,我们要如何保证文件落盘,来确保掉电等故障不会导致数据丢失.JDK也封装了对 ...
- idea分布式创建子模块后不能创建java文件
问题描述:多模块情况下,创建java文件,找不到java类,如下图,即使手动创建,在里面编写内容也没有任何反应. 解决方案:右键将文件标记为Sources Root便可以了,如果想要标记为资源文件的话 ...
- Vue学习笔记-Vue.js-2.X 学习(四)===>脚手架Vue-CLI(基本工作和创建)
(五) 脚手架Vue-CLI 一 Vue-CLI前提(nodejs和webpack) 二 Vue学习-nodejs按装配置,Node.js 就是运行在服务端的 JavaScript. 1. 去nod ...
- java 阿里云短信发送
记录自己的足迹,学习的路很长,一直在走着呢~ 第一步登录阿里云的控制台,找到此处: 点击之后就到此页面,如果发现账号有异常或者泄露什么,可以禁用或者删除 AccessKey: 此处方便测试,所以就新 ...
- Centos7 升级 sqlite3
下载地址:https://www.sqlite.org/download.html [root@djangoServer ~]# wget https://www.sqlite.org/2019/sq ...
- 分分钟钟学会Python - 第四章 文件操作
4.1 文件基本操作 obj = open('路径',mode='模式',encoding='编码') obj.write() # 写入 obj.read() # 读取 obj.close() #关闭 ...
- 阿里云CentOS8.0服务器配置Django3.0+Python 3.7 环境
---恢复内容开始--- 1. 下载并安装python # 安装Python3.7.6 wget https://www.python.org/ftp/python/3.7.6/Python-3.7. ...