2013寒假练习 1039 Unit Fraction Partition
来源:互联网 发布:投诉淘宝店铺 编辑:程序博客网 时间:2024/05/13 16:11
地址:http://acm.bit.edu.cn/mod/programming/view.php?a=525
将一个给定分数划分成许多单位分数之和,限制这些单位分数分母之积不能超过a,个数不能超过n,求方法总数。
给了那么多贴心限制肯定是DFS啦,注意假设所选分数分母非递减,防止重复。
自己写的0.14s。。那些0.008估计是利用了什么性质优化了?
#include<iostream>using namespace std;typedef struct FENSHU{int zi,mu;}fenshu;fenshu init;inline fenshu operator - (fenshu a,fenshu b) //改成内联函数 0.236s --> 0.14s{fenshu ans;ans.zi=a.zi*b.mu-a.mu*b.zi,ans.mu=a.mu*b.mu;return ans;}int ans;int a,n;void dfs(fenshu now,int num,int pro,int last) //now当前还剩的分数值,num当前最多还能分几个,pro已选分母乘积,last 上一个选的分母{fenshu next,temp;temp.zi=num,temp.mu=last;temp=now-temp;if(temp.zi>0) return; //若剩下全取最大也不够了 0.396s --> 0.236sif(now.zi==0) {ans++;return;}if(num==0) return;for(int i=a/pro;i>=last;i--){temp.zi=1,temp.mu=i; //所选单位分数next=now-temp;if(next.zi<0) break; dfs(next,num-1,pro*i,i);}}int main(){while(scanf("%d%d%d%d",&init.zi,&init.mu,&a,&n),init.zi&&init.mu&&a&&n){ans=0;dfs(init,n,1,0);printf("%d\n",ans);}return 0;}
- 2013寒假练习 1039 Unit Fraction Partition
- poj 1980 Unit Fraction Partition
- 暴搜之1980 Unit Fraction Partition
- [POJ 1980] Unit Fraction Partition Dfs
- POJ 1980 Unit Fraction Partition(dfs)
- poj 1980 Unit Fraction Partition…
- Poj 1980 Unit Fraction Partition (分数分解 搜索)
- poj 1980 dfs+剪枝(Unit Fraction Partition)
- poj 1980 Unit Fraction Partition 深搜剪枝
- POJ_1980_Unit Fraction Partition
- 2013寒假练习 1016:滑雪
- 2013寒假练习 1020:小白鼠
- 2013寒假练习 1025 Layout
- 2013寒假练习 1049 Relatives
- 2013寒假练习 1057 SUM
- 2013寒假练习 1051 Score
- 2013寒假练习 1033 Squares
- 2013寒假练习 1000:a+b
- 为Eclipse定制你自己的注释模板变量
- FreeMarker基本语法
- 八皇后问题bfs求解
- hibernate入门
- [JavaScript]JS调用PHP和PHP调用JS的方法举例
- 2013寒假练习 1039 Unit Fraction Partition
- __fastcall具体含义
- 如何做好技术管理的思考
- Broadcast详解
- BCB多线程实现代码
- 常用js效果
- POCO C++库学习和分析 -- 线程 (二)
- 完成字符串拷贝(sprintf、strcpy 及 memcpy 函数)函数之间的区别
- Inside The C++ Object Model