* **ACM集训day11
来源:互联网 发布:网络暴力 维基百科 编辑:程序博客网 时间:2024/06/03 15:36
7.21
上午打了场模拟赛,大多数bfs,就A了题贪心…哭晕在厕所…谁叫不会队列…
练习
未完…
bfs一脸懵逼,下午决定看一下算法竞赛经典递归
看到组合数…
书中计算组合数的函数:
long long C(int n,int m) { if(n-m>m) m=n-m; /* **提到一个亮点**:max(m,n-m),我一开始还看错了,选择大的数是尽量可以约分减少溢出几率*/ long long ans=1; for(int i=m+1;i<=n;i++) ans*=i;//这里先把大的数先成起来,但是感觉比我自己写的的更容易溢出 for(int i=1;i<=n-m;i++) ans/=i; return ans;}
我自己写的函数
long long C(int n,int m){ if(m<n-m) m=n-m; //(*) if(m==1) return n; return n*C(n-1,m-1)/m; /*原来写成 n/m*C(n-1,m-1),这样写会有除法,可能经过**四舍五入**,结果可能不对*/ /*条式子乘大数n的同时会约掉一个m,没那么容易爆,受作者的启发,将(*)式子中大于改成小于号,更加不容易爆*/}
测试:令n=36,m=17
书上的:
我写的:
我用计算器测试一下,答案是对的…大概测了一下,n<=60应该没多大问题…吧…n大于60有的好像也可以…看具体情况吧…没验证过正确性
兴奋!优化了一下书中的程序,对自己是一种很大的鼓励啊~加油!
0 0
- * **ACM集训day11
- 2017暑假七林集训day11
- ACM集训的开端!!!
- ACM集训记
- acm集训1
- ACM 集训总结
- ACM暑假集训(0)
- ACM暑假集训方法
- ACM集训--HDU 1166
- ACM集训第二天
- ACM集训--打字训练
- ACM集训day1
- ACM集训day2
- ACM集训day3
- ACM集训day4
- ACM集训day5
- ACM集训day6
- ACM集训day7
- [sql]分页查询
- 组合数性质
- PHP使用APC的主要用处(个人观点)
- 左偏树
- 使用qt开发ros应用
- * **ACM集训day11
- Vijos 1599 - 货币
- 二维数组作为函数参数---- error c2087:missing subscript
- Spark源码解析(二)
- hibernate与mysql映射类型对应表与mysql导入导出
- u盘在linux系统下文件只读方式的解决方案,linux基本常用命令之二十八dosfsck
- nodejs--path
- Maximum Subarray
- Android 开发神器系列(工具篇)之 Android WiFi ADB