数学:给你长度1~n的线段 组成三角形最长边长度不超过你的n三角形有多少个
Triangle Counting
- 描述
-
You are given n rods of length 1, 2…, n. You have to pick any 3 of them and build a triangle. How many distinct triangles can you make? Note that, two triangles will be considered different if they have at least 1 pair of arms with different length.
- 输入
- The input for each case will have only a single positive integer n(1<=n<=1000000). The end of input will be indicated by a case with n<1. This case should not be processed.
- 输出
- For each test case, print the number of distinct triangles you can make.
- 样例输入
-
5 8 0
- 样例输出
-
3 22
- 来源
- UVA
-
上传者
TC_李远航思路:
常规思路是模拟
但是时间复杂度将会是(o^3)明显超时
所以我们猜一定是有规律的,从数学角度开始分析
设三角形最长边为x,(其他y,z) 最多有c(x)个三角形
那么y+z>x
x-y<z<x
所以当y=1是误解0 y=2 一个解 y=3 三个解.....
0+1+2+3+....+(x-2)
总共:(x-2)*(x-1)/2
但是这里计算了y=z的情况而且每个三角形算了两次
(y=z的情况) y=x/2+1开始 (x-1)-(x/2+1)+1=x/2-1 不难发现x为奇数情况是x/2 偶数情况是x/2-1 so→(技巧)(x-1)/2避免奇偶讨论
于是 c(x)=((x-1)(x-2)/2-(x-1)/2)/2
题目问题的是最长边长不超过n的三角形有多少个 so F(n)=F(n-1)+c(n);
-
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; long long a[1000005]; int main() {int n;a[1]=a[2]=a[3]=0;for(long long i=4;i<1000005;i++)a[i]=a[i-1]+((i-1)*(i-2)/2-(i-1)/2)/2;while(~scanf("%d",&n)){if(n<=0)break;printf("%lld\n",a[n]);} }
数学:给你长度1~n的线段 组成三角形最长边长度不超过你的n三角形有多少个相关推荐
- python长度多少_用Python求最长子串长度快速版
哈喽大家好,周二也是令人愉快的一天啊,今天天气不错,坐在窗户旁边边晒太阳边写文章,再泡杯热茶,真是舒服美好,废话不多说,今天说一下Python求最长子串长度,希望对大家有作用,raksmart服务器. ...
- 一条直线上N个线段所覆盖的总长度
转自http://blog.csdn.net/bxyill/article/details/8962832 问题描述: 现有一直线,从原点到无穷大. 这条直线上有N个线段.线段可能相交. 问,N个线段 ...
- python 获取mp3时长(时间长度)
python 获取mp3时长(时间长度) 第一种方法 import librosa import time def get_mp3_duration(audio_path):""& ...
- mysql设计表时 varchar长度_设计表的时候,对变长字段长度选择的一点思考
设计表时,不管是在MSSQL还是MySQL或者Oracle,变长字段的长度衡量都是要经常面对的. 对于一个变长的字段,在满足业务的情况下(其实所谓的满足业务是一个比较模糊的东西),到底是选择varch ...
- Algorithm:C+语言实现之数组相关算法(和为定值的两个数、和为定值的m个数、荷兰国旗、长度为2n的洗牌算法、任意长度数组的洗牌算法)
Algorithm:C+语言实现之数组相关算法(和为定值的两个数.和为定值的m个数.荷兰国旗.长度为2n的洗牌算法.任意长度数组的洗牌算法) 目录 数组 1.寻找和为定值的两个数 2.和为定值的m个数 ...
- 获取字符串中的.前面的长度_算法连载之求解不含有重复字符的最长子串长度...
问题 给定一个字符串,找出其中不含有重复字符的最长子串长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc" ...
- 依图笔试2020/8/28,我是机器人(AC)、多彩珠子最长子串长度(AC)
第一题:我是机器人 一个方格,Y轴向下,X轴向右,机器人在左上角,位置(0,0). 输入命令4种: L:左转90度 R:右转90度 G X:当前朝向走X步(碰壁停止) P:输出位置坐标 Python实 ...
- C语言试题三十三之比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。
1. 题目 请编写函数function,它的功能是:比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串.若两个字符串长度相同,则返回第一个字符串. 2 .温馨提示 ...
- clob类型字段最大存储长度_请教oracle的CLOB字段的最大长度?
CLOB和BLOB都是4G,而LONG ,LONG raw是旧时代的oracle二进制和长文本表示,将来会被废弃.最长长度是2G. 单位是Byte 表中单个 LOB 字段 在 9i 版本中可保存 4 ...
- 设计表的时候,对变长字段长度选择的一点思考
原文:设计表的时候,对变长字段长度选择的一点思考 不管是在MSSQL还是MySQL或者Oracle,变长字段的长度衡量都是要经常面对的. 对于一个变长的字段,在满足业务的情况下(其实所谓的满足业务是一 ...
最新文章
- RDKit:化学指纹(Chemical Fingerprinting)
- linux内核中send与recv函数详解
- store 存取数据数组对象_ios – 如何在数组中保存自定义对象并将其存储在NSUserDefaults – iPhone中...
- buu [GUET-CTF2019]BabyRSA
- vim选中字符复制/剪切/粘贴
- LeetCode-148:排序链表
- C++:求五位学生的总成绩以及平均成绩
- Oracle数据库创建表空间
- SQL Server代码如何快速格式化
- 雨滴win7计算机路径,win7系统设置雨滴桌面(Rainmeter)开机自启动的操作方法
- 特殊字符保存到SQL数据库的问题
- 计算机教程打字方法,技巧:打字指法和关键位置教程_IT /计算机_信息
- linux——CPU使用率、内存使用率、磁盘使用率等详解
- 能源物联网及其关键技术
- 苹果手机换电池对手机有影响吗_手机电池多久需要换一次?
- 已解决:connection holder is null问题。
- 【DeepExploit】基于强化学习的自动渗透工具
- New Online Judge P1128-绝地求生(多源bfs)
- 大学物理学下——静电场05高斯定理
- yylabel html富文本,YYLabel 自动布局 富文本文字点击事件