uva11401:Triangle Counting 递推 数学
uva11401:Triangle Counting
题目读不清楚的下场就是多做两个小时...从1-n中任选3个不重复数字(不重复啊!!坑爹啊!)问能组成三角形的有多少个,
显然1~n能组成的三角形集合肯定包括了1~n-1所能组成的三角形,所以假如have[i-1]为1~n-1组成的三角形数目,have[i]只要计算:含有长度为n的边的三角形数目+have[i-1] 就行了
然后分一下类就行了,1~n/2为一块,n/2+1~n为一块,因为有一条边必须为n,剩下两条边要么都在第二块,要么分别在第一第二块,在把n分奇偶讨论下很容易就得到公式了
1 #include <iostream> 2 #include <string.h> 3 #include <cstdio> 4 #include <queue> 5 #include <vector> 6 #include <cstring> 7 #include <algorithm> 8 #include <math.h> 9 10 #define SIGMA_SIZE 26 11 #pragma warning ( disable : 4996 ) 12 13 using namespace std; 14 typedef long long LL; 15 //typedef unsigned long long uLL; 16 17 inline LL LMax(LL a,LL b) { return a>b?a:b; } 18 inline LL LMin(LL a,LL b) { return a>b?b:a; } 19 inline int Max(int a,int b) { return a>b?a:b; } 20 inline int Min(int a,int b) { return a>b?b:a; } 21 inline int gcd( int a, int b ) { return b==0?a:gcd(b,a%b); } 22 inline int lcm( int a, int b ) { return a/gcd(a,b)*b; } //a*b = gcd*lcm 23 const long long INF = 0x3f3f3f3f3f3f3f3f; 24 const int inf = 0x3f3f3f3f; 25 const int mod = 7; 26 const int maxk = 5005; 27 const int maxn = 1e6+5; 28 29 int num[maxn]; 30 LL have[maxn]; 31 32 void init() 33 { 34 //have[1] = 1; have[2] = 2; 35 bool test = true; //true表示奇数,false表示偶数 36 37 have[3] = 0; 38 LL tmp; 39 for ( LL i = 4; i <= (LL)1e6; i++ ) 40 { 41 LL t = i/2; 42 if (!test) 43 { 44 have[i] = t*(t-1) + have[i-1]; 45 test = !test; 46 } 47 else 48 { 49 have[i] = (t-1)*(t-1) + have[i-1]; 50 test = !test; 51 } 52 } 53 } 54 55 int main() 56 { 57 init(); 58 59 int x; 60 61 while ( ~scanf("%d", &x) && x >= 3 ) 62 printf( "%lld\n", have[x] ); 63 return 0; 64 }
View Code
转载于:https://www.cnblogs.com/chaoswr/p/8893647.html
uva11401:Triangle Counting 递推 数学相关推荐
- uva11401 Triangle Counting
题目大意: 给出1~n的数, 求出能组合成三角形的三个数有多少组, 每组内的数都要不一样. /*设x是最大的边, 其余的为y,z; 根据三角形性质有: x>y+z 和 x-y < z &l ...
- Codeforces 1106F Lunar New Year and a Recursive Sequence (数学、线性代数、线性递推、数论、BSGS、扩展欧几里得算法)...
Codeforces 1106F Lunar New Year and a Recursive Sequence (数学.线性代数.线性递推.数论.BSGS.扩展欧几里得算法) 哎呀大水题..我写了一 ...
- [Leetcode][第1025题][JAVA][除数博弈][数学][递推]
[问题描述][中等] [解答思路] 1. 数学证明 找规律 时间复杂度:O(1) 空间复杂度:O(1) 2. 递推 时间复杂度:O(N) 空间复杂度:O(1) class Solution {publ ...
- HDOJ 4466 Triangle 递推
1.当b=c时,a至少为1,所以c<=(n-1)/2 而a<=b 所以n-2*c<=c =>c>=n/3; 故共有(n-1)/2-(n/3)+(n/3?0:1)种. 2. ...
- POJ 3046 Ant Counting(递推,和号优化)
计数类的问题,要求不重复,把每种物品单独考虑. 将和号递推可以把转移优化O(1). f[i = 第i种物品][j = 总数量为j] = 方案数 f[i][j] = sigma{f[i-1][j-k], ...
- 数列递推(牛客练习赛83)(数学、分块)
数列递推 给定f(0)f(0)f(0),定义fn=∑i=1nf(nmodi)f_n = \sum\limits_{i = 1} ^{n} f_{(n \mod i)}fn=i=1∑nf(nmodi ...
- HDU-4278 Faulty Odometer 数学递推 || 八进制
题意 这个里程表当走到3或8的时候就会跳过 给我们这个里程表上显示的数字 让我们求这个里程表的真实数据是多少 分析 由于 3 和 8 不存在 那么就相当于一个八进制数 但是这个八进制中3 是写作4 8 ...
- Triangle Counting【数学】
Triangle Counting UVA - 11401 题目传送门 题目大意:输入一个整数n,求在1到n中选取三条边能够组成多少种三角形. AC代码: #include <cstdio> ...
- 51nod 13831048 整数分解为2的幂 [递推]【数学】
题目连接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1048 ---------------------------- ...
最新文章
- 计算机的桌面教案,《认识计算机桌面》教案-20210608141312.pdf-原创力文档
- jquery遍历集合数组标签
- es6 依赖循环_探索 JavaScript 中的依赖管理及循环依赖
- JAVA四种基本排序总结
- 百度seo排名点击器_SEO整站优化思路 - 百度seo排名点击
- Oracle优化笔记
- WebLogic应用部署之配置不需要应用名直接访问(配置默认应用)
- 高通增加Adsp log( 三十)
- 【预训练模型】预训练语言模型的前世今生之风起云涌
- JAVA获取汉字拼音首字母
- 《数据结构与面向对象程序设计》第二、三周学习总结
- 新年新气象,重新出发
- ES系列:字段类型不对时,如何保存文档到索引
- Nordic Homekit开发--Homekit广播数据解析
- 抖音中的视频怎么使用手机录制 安卓手机录屏软件哪个好
- 扔掉“铁饭碗”、靠脑白金翻盘,如今 60 岁的史玉柱“重返一线”改游戏
- 【LaTeX】LaTeX打取整符号
- ijkplayer编译生成aar,支持https,rtsp,录制与截图
- 简历中的项目经历怎么写?
- ubuntu20.04 开启休眠(hibernate)功能的成功解决以及各种尝试的过程全记录
热门文章
- linux ssh motd 颜色,ubuntu ssh登录的时候motd被打印了两次
- 网易mumu模拟器adb连接配置
- 【愚公系列】2022年02月 U3D全栈班 005-Unity引擎视图
- visio修改默认字体
- Huffman文件压缩之文件夹压缩
- 博大考神》2006版之Word2003题库版操作提示
- java实现word(docx)在线编辑(word转html,html转word)——解读document.xml结构
- 讲一下创业公司的技术架构演进
- 2020版影视制作学习路线图(含大纲+视频+工具+书籍+面试)
- 抖音账号如何打造,抖音直播带货怎么做:国仁楠哥