博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【习题 7-7 UVA-12558】Egyptian Fractions (HARD version)
阅读量:5014 次
发布时间:2019-06-12

本文共 2083 字,大约阅读时间需要 6 分钟。

【链接】

【题意】

在这里输入题意

【题解】

迭代加深搜索。
枚举最大量maxdep
在dfs里面传剩余的要凑的分子、分母
以及上一次枚举的值是多少。
然后找到最小的k,满足1/k<=分子/分母
然后从max(k,last+1)开始枚举。
->剪枝就是剩余的全都用这个最大的分数。如果都不行就肯定不行了。
二分找这个k.
不能用的数字就直接跳过就行。

【代码】

/*    1.Shoud it use long long ?    2.Have you ever test several sample(at least therr) yourself?    3.Can you promise that the solution is right? At least,the main ideal    4.use the puts("") or putchar() or printf and such things?    5.init the used array or any value?    6.use error MAX_VALUE?    7.use scanf instead of cin/cout?    8.whatch out the detail input require*//*    一定在这里写完思路再敲代码!!!*/#include 
#define ll long longusing namespace std;const int N = 1e3;bool bo[N+10];int a,b,k,maxdep;vector
v,ans;ll getidx(int a,int b){ //1/i <= a/b 且 i最小 //b<=a*i ll l= 1,r = 1e8; ll temp = -1; while (l <= r){ int m = (l+r)>>1; if (1LL*a*m>=b){ temp = m; r = m - 1; }else l = m + 1; } return temp;}bool Greater(vector
v,vector
ans){ if ((int)ans.size()==0) return true; for (int i = (int)v.size()-1;i>=0;i--) if (v[i]!=ans[i]){ if (v[i]>ans[i]) return false;else return true; } return false;}bool dfs(int dep,int a,int b,ll last){ if (dep==maxdep){ if (a==1 && b>last){ if (b<=1000 && bo[b]) return false; v.push_back(b); if (Greater(v,ans)) ans = v; v.pop_back(); return true; } return false; } ll idx = getidx(a,b); ll ma = max(last+1,idx); ll delta = maxdep-dep+1; //delta/ma
> T; int kase = 0; while(T--){ memset(bo,0,sizeof bo); cin >> a >> b >> k; while (k--){ int x; cin >> x; bo[x] = 1; } ans.clear(); v.clear(); for (maxdep = 1;;maxdep++){ if (dfs(1,a,b,1)){ cout <<"Case "<<++kase<<": "<
<<"/"<<<"=1/"<
<(int) ans.size();i++) cout << "+1/"<

转载于:https://www.cnblogs.com/AWCXV/p/8159189.html

你可能感兴趣的文章
ITCAST视频-Spring学习笔记(使用Spring的注解方式实现AOP入门)
查看>>
关于二维码“QR”的6大注意事项
查看>>
MySQL - 常用命令及常用查询SQL
查看>>
C# .NET MVC 接收 JSON ,POST,WCF 无缝隙切换
查看>>
android获取USB设备的名称
查看>>
JavaPersistenceWithHibernate第二版笔记-第七章-005排序的集合(@org.hibernate.annotations.SortComparator)...
查看>>
ue4同c#通信时的中文乱码问题
查看>>
黄老师架构师课程笔记(二)
查看>>
mvc性能优化
查看>>
log
查看>>
663 如何做“低端”产品?(如何把低端做得高端 - 认同感)
查看>>
JDBC 第九课 —— 初次接触 JUnit
查看>>
Windows核心编程:第10章 同步设备IO与异步设备IO
查看>>
浏览器加载、解析、渲染的过程
查看>>
开放api接口签名验证
查看>>
sed 常用操作纪实
查看>>
C++复习:对C的拓展
查看>>
校外实习报告(九)
查看>>
android之android.intent.category.DEFAULT的用途和使用
查看>>
CAGradientLayer 透明渐变注意地方(原创)
查看>>