51nod-1509 加长棒(组合数学+挡板法)
来源:互联网 发布:淘宝有正版av光盘卖吗 编辑:程序博客网 时间:2024/06/11 21:58
原题链接
1509 加长棒
题目来源: CodeForces
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题
收藏
关注
现在有三根木棒,他们的长度分别是a,b,c厘米。你可以对他们进行加长(不同的木棒可以增加不同的长度),他们总的加长长度不能超过L厘米。你也可以不对他们进行加长。
现在请你计算一下有多少种加长的方式使得他们能构成合法的三角形(面积非0)。
Input
单组测试数据。共一行,包含4 个整数a,b,c,L (1≤a,b,c≤3*10^5, 0≤L≤3*10^5)。
Output
输出答案占一行。
Input示例
1 1 1 2
Output示例
4
解题思路:
这个题目直接想的话 没法做,所以就是间接的想,也就是采用容斥原理从反面来想,也就是说 用总数减去不能够满足三角形的方法数,那么先来
求总数,因为现在的问题是将
挡板法的条件,所以我们就将
三角形条件的方法数,因为三角形一定满足一个条件是
然后根据这个可以列一个方程,假设
然后因为所有数的和一定是
然后在利用挡板法求出 不能组成三角形的方法数,是
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <vector>#include <stack>#define maxn 1000005#define INF 1000000009typedef long long ll;using namespace std;ll solve(ll a, ll b, ll c, ll m){ll k = 0;for(ll i = 0; i <= m; i++){ll temp = min(m+a+b+c-a-i, a+i);if(temp < b + c) continue;temp -= b + c;k += (temp+2) * (temp+1) / 2;}return k;}int main(){ll a, b, c, m;scanf("%I64d%I64d%I64d%I64d", &a, &b, &c, &m);ll ans = (m+3) * (m+2) * (m+1) / 6;ans -= solve(a, b, c, m);ans -= solve(b, a, c, m);ans -= solve(c, a, b, m);cout << ans << endl;return 0;}
0 0
- 51nod-1509 加长棒(组合数学+挡板法)
- 51NOD 1509 加长棒 && Codeforces 571 A. Lengthening Sticks(组合数学 + 挡板法)
- 51nod 1509 加长棒 组合数学(隔板法)
- 51nod 1509 加长棒 插板法
- 51Nod-1509-加长棒
- 51nod 1509 加长棒(隔板法)
- 51nod 1509 加长棒 (隔板)
- 组合数学-利用挡板法解排列组合题
- 51node 1509 加长棒|codeforces571A(组合数)
- 51nod 1453 抽彩球 插板法(组合数学)
- 1509 加长棒
- 51nod 1228 (伯努利数 + 组合数学)
- 51Nod - 1677 树形dp + 组合数学
- 51nod 瞬间移动 (组合数学)
- 51nod 1627 瞬间移动【组合数学】
- 加长棒
- 51NOD 1639 绑鞋带(组合数学 + 递推)
- 51nod 1118 机器人走方格(组合数学)
- 职场可能犯下的错误
- 《西游记》里哪个妖怪最强?
- 描边时消除锯齿SetSmoothingMode
- Hadoop与Spark常用配置参数总结
- Ajax之同步,异步
- 51nod-1509 加长棒(组合数学+挡板法)
- BitBlt介绍
- 华夏互联十年网站开发经验-只为更专业
- Snmp实践与总结
- Android图片处理之Glide使用大全
- (转)策略回测的框架、实现、测试
- 【Java每日一题】20161221
- cryptsetup
- mysql的binlog并做简单恢复