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] ...
随机推荐
- OpenStack kolla 多 region 部署配置
region one: cat /etc/kolla/globals.yml openstack_region_name: "RegionOne" multiple_regions ...
- Python3.5 学习八 附加知识点 paramiko和rsa非对称秘钥的适用
关于paramiko: SSH SFTP 机器上没有安装该模块,只是初步了解了下,没有细细研究. 可能以后只有做运维的才能用到的吧 利用秘钥,在ssh中不输入用户名密码进行登录 利用秘钥进行FTP操作 ...
- JS 对象 合并
来自:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Sy ...
- centOS7 下安装smb服务器
转载自:http://www.cnblogs.com/lgh344902118/p/7503620.html centOS7和windows10 samba是一款可以让linux和windows下共享 ...
- Kafka Java 客户端开发
依赖包导入 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.1 ...
- day 45 Django 的初识2 路由层,视图层,模板层
前情提要: 今天继续学习Django 的内容, 今天主要和渲染相关 1>配置路由 >2:写函数 >3 指向url 一:路由层 1:配置静态支持文件 1:路由层的简单配置 >dj ...
- Swift循环遍历集合方法
第一种方式:for-in循环 OC延续了C语言的for循环,在Swift中被彻底改造,我们无法再使用传统形式的for循环了 遍历数组和字典: //遍历数组 let iosArray = [&quo ...
- Windows10下搭建TensorFlow环境
转载请注明源出处:http://www.cnblogs.com/lighten/p/6753695.html 这篇文章介绍了一下在Windows上安装TensorFlow的步骤,主要是翻译了一下官方的 ...
- Spring Security构建Rest服务-0300-Restful API异常处理
SpringBoot默认的错误处理机制: 一.测试需要的部分代码 (完整代码放在了github https://github.com/lhy1234/spring-security): UserCon ...
- phpstorm扩展
1, CodeGlance 代码地图插件 <img src="https://pic1.zhimg.com/50/v2-721f173bafcb9b60853819c32780 ...