fuz 2159 WuYou
Accept: 16 Submit: 64
Time Limit: 1000 mSec Memory Limit : 32768
KB
Problem Description
有两个正整数A和B,这两个数的位数相同且不含前缀0。A的一些位不能够确定,用‘?’代替。已知A是满足 A < B 的最大的A。求A 。
Input
第一行一个整数T(T<=1000),表示有T组数据。
每组数据两行,第一行为A,第二行为B(0 < A,B <= 10^10000)。
Output
对于每组数据,输出满足A<B的最大的A。如果不存在,输出-1。
Sample Input
Sample Output
#include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
using namespace std; char a[];
char b[];
int alen,blen;
struct node
{
bool front_min;
}f[]; void Init(int n)
{
int i;
for(i=;i<=n;i++)
{
f[i].front_min=false;
}
}
void solve()
{
int i;
bool end_min=false;
for(i=alen-;i>=;i--)
{
if(a[i]!='?')
{
if(a[i]<b[i]) end_min=true;
else if(a[i]>b[i]) end_min=false;
}
else if(a[i]=='?')
{
if(f[i].front_min==true)
{
a[i]='';
}
else if(f[i].front_min==false && end_min==true)
{
a[i]=b[i];
}
else if(f[i].front_min==false && end_min==false)
{
if(b[i]=='')
{
a[i]='';
end_min=false;
}
else
{
a[i]=b[i]-;
end_min=true;
}
}
}
}
if(a[]!='' && strcmp(a,b)<)
{
for(i=;i<alen;i++) printf("%c",a[i]);
printf("\n");
}
else printf("-1\n");
}
int main()
{
int i,T;
bool front_min;
scanf("%d",&T);
getchar();
while(T--)
{
scanf("%s%s",a,b);
alen=strlen(a);
blen=strlen(b);
if(alen<blen){printf("-1\n");continue;}
Init(alen);
front_min=false;
for(i=;i<alen;i++)
{
if(a[i]!='?' && a[i]!=b[i])
{
front_min=true;
}
if(front_min==true)
f[i].front_min=true;
}
solve();
}
return ;
}
搜索
#include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
using namespace std; char a[];
char b[];
int alen,blen;
bool end_min; void dfs(bool front_min,int i)
{
if(a[i]=='\0') return;
if(a[i]!='?')
{
if(a[i]!=b[i])
front_min=true;
}
dfs(front_min,i+);
if(a[i]=='?')
{
if(front_min==true)
{
a[i]='';
}
else if(front_min==false && end_min==true)
{
a[i]=b[i];
}
else if(front_min==false && end_min==false)
{
if(b[i]=='')
{
a[i]='';
end_min=false;
}
else
{
a[i]=b[i]-;
end_min=true;
}
}
}
else if(a[i]!='?')
{
if(a[i]<b[i])
end_min=true;
else if(a[i]>b[i])
end_min=false;
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%s%s",a,b);
alen=strlen(a);
blen=strlen(b);
if(alen<blen){printf("-1\n");continue;} end_min=false;
dfs(false,);
if(a[]!='' && strcmp(a,b)<)
{
printf("%s\n",a);
}
else printf("-1\n");
}
return ;
}
fuz 2159 WuYou的更多相关文章
- HITtrainning20140417题解
题目列表: ID Origin Title 10 / 15 Problem A FZU 2152 文件系统 0 / 16 Problem B FZU 2153 A simple geome ...
- hdu 2159 FATE
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 思路:二维完全背包,状态转移方程为: f[j][l]=max(f[j][l],f[j-b[i]] ...
- HDU 2159 FATE(二维费用背包)
FATE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- POJ 2159 Ancient Cipher 难度:0
题目链接:http://poj.org/problem?id=2159 #include <cstring> #include <cstdio> #include <cc ...
- HDU 2159 FATE (二维完全背包
FATE http://acm.hdu.edu.cn/showproblem.php?pid=2159 Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备 ...
- Poj 2159 / OpenJudge 2159 Ancient Cipher
1.链接地址: http://poj.org/problem?id=2159 http://bailian.openjudge.cn/practice/2159 2.题目: Ancient Ciphe ...
- HDU 2159 二维费用背包问题
一个关于打怪升级的算法问题.. 题意:一个人在玩游戏老是要打怪升级,他愤怒了,现在,还差n经验升级,还有m的耐心度(为零就删游戏不玩了..),有m种怪,有一个最大的杀怪数s(杀超过m只也会删游戏的.. ...
- hdu 2159
二维背包,dp[i][j]表示忍耐度为i,且还可以杀j个怪时能获得的最大经验值 dp[i][j]=max(dp[i][j],dp[i-r[k]][j-1]+e[k]),r[k]为杀死第k种怪掉的忍耐度 ...
- hdu 2159 FATE (二维完全背包)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 思路: dp[j][k] 代表消耗耐久度j,干掉k个敌人获得的经验值. 状态转移方程为: dp[j] ...
随机推荐
- 数据库的完整性约束(ForeignKey ,Unique)
文字转自于 海燕.博客 一.介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 ...
- 931. Minimum Falling Path Sum
Given a square array of integers A, we want the minimum sum of a falling path through A. A falling p ...
- 进程控制块(PCB)
用来描述和控制进程的运行的一个数据结构--进程控制块PCB(Process Control Block),是进程实体的一部分,是操作系统中最重要的记录型数据结构. PCB是进程存在的唯一标志 系统能且 ...
- Elasticsearch Java API简介
加入依赖 我本地的Elasticsearch的版本是2.1.0,因此加入相应的maven依赖 <dependency> <groupId>org.elasticsearch&l ...
- Web应用三种部署方式的优缺点
方式一:修改server.xml文件 优点: 配置速度快,只需要在server.xml文件中添加<Context>标签,在其中分别配置path虚拟路径和docBase真实路径然后启动Tom ...
- POJ 2336
#include <iostream> using namespace std; int main() { //freopen("acm.acm","r&qu ...
- SQL Server数据库——数据库的数据导出与数据导入
http://jingyan.baidu.com/article/3c48dd34531d5de10be358b8.html
- Java的简单计算运用
上课的时候写的博客,哈哈哈哈没事情做了,明天就要放假了所以有点点按捺不住自己所以想到来写写程序,今天我发的是我们Java上课老师讲的代码,好像是Java的计算运用,但是这个代码有缺点,只能够输入的打出 ...
- Java之集合(九)LinkedHashMap
转载请注明源出处:http://www.cnblogs.com/lighten/p/7367525.html 1.前言 前一章对Map中的HashMap进行了讲解(虽然只详细介绍了一下红黑树的部分), ...
- xml常用的error-page
<error-page> <error-code>404</error-code> <location>/WEB-INF/jsp/errors/erro ...