hrbust 1481
/* 构造特定条件的68序列:给定目标串中6 8 68 86 这四种字串的个数a b p q ,输出所有满足条件的字符串中代表的数字最小的那个
// hrboj 1481 _______________________________________________________________________
//#include<bits/stdc++.h>
#include<iostream>
#include<string>
#include<cstdio> using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
#define pb(x) push_back(x)
#define ss(x) scanf("%s",x)
#define sd(x) scanf("%d",&x)
#define sll(x) scanf("lld",&x)
typedef unsigned long long ull;
#define mem(A, X) memset(A, X, sizeof A)
#define ford(i,l,u) for(ll (i)=(ll)(l);(i)>=(ll)(u);--(i))
#define foreach(e,x) for(__typeof(x.begin()) e=x.begin();e!=x.end();++e)
#define fori(i,l,u) for(ll (i)=(ll)(l);(i)<=(ll)(u);++(i))
#define delete_this freopen("in.txt","r",stdin)
#define sd2(x,y) scanf("%d%d",&x,&y)
#define slf(x) scanf("%lf",&x)
#define sc(x) scanf("%c",&x)
#define sec second
#define fir first const ll mod=1e9+7;
const ll maxn=1e5+10;
int a,b,p,q;
void out6(int a )
{
fori(i,1,a) printf("6");
}
void out8(int a )
{
fori(i,1,a) printf("8");
}
void out68(int a )
{
fori(i,1,a) printf("68");
}
int main()
{
//delete_this;
while(cin>>a)
{
cin>>b>>p>>q;
int flag=1;
if(a==p)
{ if(q==p)
{ if(b>=p+1)
{
flag=0;
out8(1);
out68(p);
out8(b-p-1);
}
}
else if(q==p-1)
{
if(b>=p)
{
flag=0;
out68(p);
out8(b-p);
}
} }
else if(a>p)
{
if(q==p)
{
if(b>=p)
{
flag=0;
out6(a-(p+1));
out68(p);
out8(b-p);
out6(1);
}
}
else if(q==p-1)
{
if(b>=p)
{
flag=0;
out6(a-p);
out68(p);
out8(b-p);
}
}
else if(q==p+1)
{
if(b>=p+1)
{
flag=0;
out8(1);
out6(a-p-1);
out68(p);
out8(b-p-1);
out6(1);
}
} } if(flag) puts("-1");
else puts("");
} return 0;
} /*
分析: 记目标串有a个6,b个8,p个68子串,q个86子串。
6和8的个数是固定的,于是字符串的长度固定。 现在尝试对所有可能存在解的情况进行构造。
这里选择a,p的个数的关系分情况进行讨论,并在之后选择优先放置68 86这类子串(反过来的话可能会比较复杂)。
所有的可能存在解的情况分为(1)a==p (2)a>p
note : 构造类的问题 分类逻辑分支都进行讨论到 是很关键的,在保证不重不漏的情况尽量简化。
此外有一些很好的思路: 考虑某些关键性变量,通过进行限制,减少分类的情况进行简化。比如这里选择68为分类标准。
考虑那些确定的量 ,单个6 8的个数,因为其没有重复,可以作为考虑的依据和数字长度的确定。
考虑构造的先后次序,哪些重要,哪些不重要。这里优先68 然后86。之后的单个数字就很好处理了
debug : 68可能比86少一个是有可能的,即代码中的else if q==p+1的这一分支, 具体的例子 比如 868686,2个68,3个86.
optimize: 一些重复性的操作---->函数简化。
只考虑可能产生解的逻辑分支,其他else不管。
*/
hrbust 1481的更多相关文章
- 动态规划(背包问题):HRBUST 1377 金明的预算方案
金明的预算方案 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行 ...
- [ An Ac a Day ^_^ ] hrbust 2291 Help C5 分形
开博客这么久从来没写过自己学校oj的题解 今天写一篇吧 嘿嘿 原题链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProble ...
- hrbust 2384 相同的不相同的字符串
Description 研究证明,汉的字阅读序顺是不会影响你明白这句话的意思的. 但是如果顺序差的太多也是会影响的,比如汉阅读顺的序字你就看不懂什么意思了. 那么多少算多呢?科学家芦苇给出证明,当两个 ...
- HRBUST - 2358 Magic network
HRBUST - 2358 思路:dfs序 + 树状数组 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimiz ...
- POJ 3660 Cow Contest / HUST 1037 Cow Contest / HRBUST 1018 Cow Contest(图论,传递闭包)
POJ 3660 Cow Contest / HUST 1037 Cow Contest / HRBUST 1018 Cow Contest(图论,传递闭包) Description N (1 ≤ N ...
- HDU 1611 敌兵布阵 / HRBUST 1794 敌兵布阵(线段树)
HDU 1611 敌兵布阵 / HRBUST 1794 敌兵布阵(线段树) Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A ...
- The Die Is Cast(poj 1481简单的双dfs)
http://poj.org/problem?id=1481 The Die Is Cast Time Limit: 1000MS Memory Limit: 10000K Total Submi ...
- hrbust 1621 迷宫问题II 广搜
题目链接:http://acm.hrbust.edu.cn/vj/index.php?/vj/index.php?c=&c=contest-contest&cid=134#proble ...
- 两次DFS,POJ(1481)
题目链接:http://poj.org/problem?id=1481 两次DFS,这里的思路是,没找到*,就说明,有一个骰子,因此,每搜索到一个*,深搜4个方向,并且变为'.',要是搜到'X',就是 ...
随机推荐
- eclipse + python dev
错误:Project interpreter not specified解决方法 http://blog.csdn.net/magictong/article/details/7288732 安装Py ...
- util-linux编译unknown architecture 'BSD_LABELSECTOR' undeclared错误
------------------------------------------------------------------------------ In :: fdiskbsdlabel.h ...
- 为什么eclipse中代码提示错误,但是项目目录却不提示错误
public class Aasf { public static void main(String[] args) { System.out.println("");aihfsa ...
- js倒计时显示
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>j ...
- JDK8+Dubbo2.5.2实践
几年前就听说过Dubbo的大名,今天由于工作需要,研究一下. 从网上找了一篇文章,非常靠谱,并且提供了简单的示例代码,基本上可以跑起来. 文章地址: http://www.cnblogs.com/Ja ...
- DOM4J的使用
http://blog.csdn.net/redarmy_chen/article/details/12969219 http://blog.csdn.net/wlbing0625/article/d ...
- class can not be find with platformType:1 step 1
使用第三方库的时候 (配合cocopods)混合使用一定要注意 为什么会出现这样的问题... 苦苦难为我半天时间 都有想打人的冲动 前天一切正常今天出来个这 原因很简单当使用cocopods的时候默认 ...
- Consistent hashing —— 一致性哈希
原文地址:http://www.codeproject.com/Articles/56138/Consistent-hashing 基于BSD License What is libconhash l ...
- 线程的Abort方法有感
今天看CSDN上一个很老的帖子,有个人说Thread.Abort()方法调用之后一定会抛出异常,我对这个有点疑问. 于是自己做了一个测试demo,来研究Abort抛出异常的时机.废话少说,直接上代码: ...
- RunLoop笔记
1.Runloop基础知识 - 1.1 字面意思 a 运行循环 b 跑圈 - 1.2 基本作用(作用重大) a 保持程序的持续运行(ios程序为什么能一直活着不会死) b 处理app中的各种事件(比如 ...