Egyptian Fractions (HARD version) UVA
来源:互联网 发布:linux自动挂载硬盘 编辑:程序博客网 时间:2024/05/20 08:21
一道和紫书上原来的埃及分数差不多的题,就是加了一个判断条件,用这道题复习一下迭代加深搜索。
上代码:
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<set>using namespace std;typedef long long ll;ll gcd(ll a,ll b){ return b==0 ? a : gcd(b,a%b);}ll T,w;ll a,b;ll flag;ll maxd;ll out[10000000];ll ans[10000000];set<ll> used;bool better(ll d){ for(ll i=d;i>=0;i--) { if(ans[i]==out[i])continue; return ans[i]==0 || out[i] < ans[i]; } return false;}ll get_b(ll x,ll y){ ll c = y/x-3; while(c*x<y)c++; return c;}bool dfs(ll d,ll form,ll x,ll y){ if(d==maxd) { if(y%x) return false; flag = 1; if(used.find(y/x)!=used.end()) return false; out[d] = y/x; if(better(d)) memcpy(ans,out,sizeof(ll)*(d+1)); return true; } bool ok = false; form = max(form, get_b(x,y)); ll cc = (maxd-d+1)*y; for(ll t=form; ;t++) { if( cc <= x*t ) return ok; if(used.find(t)!=used.end()) continue; ll xx = t*x-y; ll yy = t*y; ll gg = 1; out[d] = t; gg = gcd(yy,xx); if(dfs(d+1,t+1,xx/gg,yy/gg)) ok = true; } return ok;}void shuchu(){ printf("Case %lld: %lld/%lld=",w,a,b); printf("1/%lld",ans[0]); for(ll i=1; ;i++) { if(ans[i]==0)break; printf("+1/%lld",ans[i]); } printf("\n"); return ;}int main(){ scanf("%lld" ,&T); for(w=1 ; w<=T; w++) { scanf("%lld%lld" ,&a,&b); flag = 0; used.clear(); memset(out, 0,sizeof(out)); memset(ans,0,sizeof(ans)); ll num; ll x; scanf("%lld", &num); while(num--) {scanf("%lld", &x); used.insert(x);} for(maxd=1 ; ;maxd++) { memset(ans, 0, sizeof(ans)); if( dfs(0,get_b(a,b),a,b) ) break; } shuchu(); } return 0;}水波。
阅读全文
0 0
- Egyptian Fractions (HARD version) UVA
- Egyptian Fractions (HARD version) UVA
- Egyptian Fractions (HARD version) UVA
- UVA 12558 Egyptian Fractions (HARD version) IDA*
- UVa 12558 - Egyptian Fractions (HARD version) [IDA*]
- uva 12558Egyptian Fractions (HARD version)
- uva 12558Egyptian Fractions (HARD version)
- UVA 12558 Egyptian Fractions (HARD version)
- 12558 - Egyptian Fractions (HARD version)
- UVa 12558 - Egyptian Fractions (HARD version)(IDA*)
- UVa 12558:Egyptian Fractions (HARD version)(IDA*)
- UVa 12558 Egyptian Fractions (HARD version)--迭代加深搜索
- 12558 - Egyptian Fractions (HARD version)(IDA*算法)
- #UVA12588#Egyptian Fractions (HARD version)(ID_搜索基础题)
- 习题7-7 Egyptian Fractions (HARD version) 埃及分数 (IDA*)
- UVA 12558(p216)----Eg[y]ptian Fractions(HARD version)
- Sicily 2409. Egyptian Fractions
- 习题7-7 埃及分数(Eg[y]ptian Fractions (HARD version), Rujia Liu's Present 6, UVa 12558)
- 如何激活xp
- BZOJ4881 [Lydsy2017年5月月赛]线段游戏
- [bzoj] 1242: Zju1015 Fishing Net弦图判定
- Python中的布尔类型的注意点
- linux中线程ID与进程ID
- Egyptian Fractions (HARD version) UVA
- 信息系统分析与设计----系统分析概述
- jvm什么时候会触发full gc
- android socket java和C通信
- SylixOS块设备CACHE管理
- JSCPC 2017 参赛总结
- 2004年分区联赛提高组之三 合唱队形(dp)
- 【java】线程同步关键字volatile,synchronize,取消串行化关键字transient
- 离散题目8