zoj 3816 2014牡丹江网赛 DFS
来源:互联网 发布:淘宝和京东创始人 编辑:程序博客网 时间:2024/04/27 21:35
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5348
写的真痛苦,换了好几种写法还是不行,贪心贪不对.......
参考了http://www.cnblogs.com/njczy2010/p/3961614.html
思路:
首先枚举左边的每一位,然后枚举右边有几位和这一位相同,写着还是有些细节要注意的
//#pragma comment(linker, "/STACK:102400000,102400000")#include <cstdio>#include <cstring>#include <algorithm>#include <string>#include <iostream>#include <iomanip>#include <cmath>#include <map>#include <set>#include <queue>using namespace std;#define ls(rt) rt*2#define rs(rt) rt*2+1#define ll long long#define ull unsigned long long#define rep(i,s,e) for(int i=s;i<e;i++)#define repe(i,s,e) for(int i=s;i<=e;i++)#define CL(a,b) memset(a,b,sizeof(a))#define IN(s) freopen(s,"r",stdin)#define OUT(s) freopen(s,"w",stdout)const ll ll_INF = ((ull)(-1))>>1;const double EPS = 1e-8;const int INF = 100000000;const int MAXN = 30;ll n;char num[MAXN];char leftn[MAXN],rightn[MAXN];int lenn;void init(){ sprintf(num,"%lld",n); CL(leftn,0); CL(rightn,0); lenn=strlen(num); for(int i=0;i<lenn;i++) num[i]-='0';}ll cal(int l, int r){ ll ret=0; for(int i=0;i<l;i++) ret=ret*10+(ll)leftn[i]; for(int i=r-1;i>=0;i--) ret=ret*10+rightn[i]; return ret;}ll dfs(int l, int r, int cur){ //////// /*printf("## l=%d r=%d\n",l,r); for(int i=0;i<l;i++) putchar('0'+i); putchar('\n'); for(int i=r-1;i>=0;i--) putchar('0'+i); putchar('\n');*/ ///////// ll ans=-1; if(l+r>lenn)return -1ll; if(l+r == lenn) { ans=cal(l,r); if(ans>=n)return -1; return ans; } int m= (cur==1) ?num[l]:9; for(int i=m;i>=0;i--) { /// //printf("*******i=%d m=%d\n",i,m); //////// leftn[l]=i; if( ( l==0 || (l>0&&leftn[l]!=leftn[l-1]) ) && !(l==0 && i==0) && (l+r+1!=lenn) )/// { for(int k=1;k+l+r<=lenn;k++)/// { rightn[k+r-1]=i; ans=max(ans, dfs(l+1,r+k,cur&&(m==i))); } } else { ans=max(ans, dfs(l+1, r, cur&&(m==i))); } if(ans>0) return ans; } return ans;}int main(){ //IN("H.txt"); int ncase; scanf("%d",&ncase); while(ncase--) { scanf("%lld",&n); init(); printf("%lld\n",dfs(0,0,1)); } return 0;}
0 0
- zoj 3816 2014牡丹江网赛 DFS
- zoj 3811 Untrusted Patrol 2014牡丹江网络赛 dfs
- zoj 3818 2014牡丹江网赛
- ZOJ-3811 Untrusted Patrol DFS 2014牡丹江网络赛C题
- zoj 3811 (2014 牡丹江网赛 C) Untrusted Patrol
- zoj 3817 2014牡丹江网赛 字符串哈希
- ZOJ 3811 / 2014 牡丹江赛区网络赛 C. Untrusted Patrol
- ZOJ 3814 / 2014 牡丹江赛区网络赛 F. Sawtooth Puzzle
- ZOJ 3819 Average Score (2014牡丹江区域赛)
- zoj 3822 Domination(2014牡丹江区域赛D题)
- ZOJ 3827 Information Entropy (2014牡丹江区域赛)
- zoj 3822 (2014 牡丹江区域赛 D) Domination
- zoj 3829 (2014牡丹江区域赛K) Known Notation
- ZOJ 3829 (2014 牡丹江现场赛 K 题)
- 2014牡丹江 现场赛 F zoj 3824 Fiber-optic Network
- zoj 3820(2014牡丹江现场赛B题)
- ZOJ 3819Average Score (2014牡丹江现场赛A)
- ZOJ 3822Domination 动态规划 2014牡丹江现场赛D
- AChartEngine中表盘图
- ASP.NET常用方法
- 数据结构实验之栈一:进制转换(栈的应用)
- 在Eclipse Java EE中安装 Emmet (Zend Coding) 需要注意的地方!
- oracle 与Access的区别
- zoj 3816 2014牡丹江网赛 DFS
- repeater分页的实现
- 深圳福佳白啤酒加盟代理批发
- Starling Feathers Controls ScreenNavigator
- JAVA编程思想-第九章 接口
- [切图]不规则图形的切法
- swift UINavigationController 导航控制器(六)【转自http://blog.csdn.net/zhang_biao_1991/article/details/313927】
- logmnr使用
- 黑马程序员--【学习日记三】——java面向对象(一)