Codeforces Beta Round #77 (Div. 1 Only), problem: (B) Lucky Numbers 数位DP+剪枝DFS+贪心
2013-02-25 20:49
363 查看
95B - Lucky Numbers
做法:要找出最小的数,可以贪心的先看这一位可否变成4,如果不可再换7,然后用DFS看每一种状态是否可以存在。这种无法机械递推,而且可以有明显剪枝地方的题,要记得用DFS
做法:要找出最小的数,可以贪心的先看这一位可否变成4,如果不可再换7,然后用DFS看每一种状态是否可以存在。这种无法机械递推,而且可以有明显剪枝地方的题,要记得用DFS
#include<cstdio> #include<cstring> /******* 抽时间要细想想DFS啊 *****/ const int LMT=100005; int len; char num[LMT],ans[LMT]; bool dfs(int pos,int n4,int n7,int tag) { if(pos>=len)return 1; if(tag) { int i; for( i=0;i<n4;i++)ans[i+pos]='4'; for(;i<len;i++)ans[i+pos]='7'; return 1; } if(n4&&num[pos]<='4') { if(dfs(pos+1,n4-1,n7,num[pos]<'4')) { ans[pos]='4'; return 1; } } if(n7&&num[pos]<='7') { if(dfs(pos+1,n4,n7-1,num[pos]<'7')) { ans[pos]='7'; return 1; } } return 0; } int main(void) { scanf("%s",num); len=strlen(num); if(len&1||!dfs(0,len/2,len/2,0)) { len+=1+(len%2==0); for(int i=0;i<len/2;i++)ans[i]='4'; for(int i=len/2;i<len;i++)ans[i]='7'; } ans[len]=0; printf("%s\n",ans); return 0; }
相关文章推荐
- odeforces Beta Round #25 (Div. 2 Only), problem: (D) Roads not only in Berland 图论 DFS
- Codeforces Round #371 (Div. 1) C. Sonya and Problem Wihtout a Legend(贪心+DP)
- 【Codeforces Round 169 (Div 2) D】【简单数位贪心】Little Girl and Maximum XOR 区间选两数使得异或值尽可能大
- 【DFS】【贪心】Codeforces Round #411 (Div. 1) C. Ice cream coloring
- HDU3709:Balanced Number(数位DP+记忆化DFS)
- Codeforces Round #437 (Div. 2 C. Ordering Pizza 贪心 only two types of pizza
- Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) D. Generating Sets __ dfs+优先队列+贪心
- POJ3252:Round Numbers(数位DP+记忆化DFS)
- Codeforces Round #296 (Div. 2) - D. Clique Problem(贪心)
- Croc Champ 2013 - Round 2 (Div. 2 Edition) 贪心+ 搜索+剪枝 + 数学
- Codeforces Round #394 (Div. 2) D. Dasha and Very Difficult Problem 贪心
- Codeforces Round #437 (Div. 2 C. Ordering Pizza 贪心 only two types of pizza
- HDU 5323 Solve this interesting problem(dfs结合线段树特点剪枝)
- Codeforces Beta Round #85 (Div. 1 Only), problem: (C) Petya and Spiders 状态压缩
- UVA 10123 No Tipping (物理+贪心+DFS剪枝)
- UVA 10123 No Tipping (物理+贪心+DFS剪枝)
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 831D) - 贪心 - 二分答案 - 动态规划
- CodeForces Round #202 (Div. 2) / ProblemSet 349B - B. Color the Fence 【贪心】
- Codeforces Round #437 (Div. 2 C. Ordering Pizza 贪心 only two types of pizza
- Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 828D) - 贪心