hdu 1015(DFS)
Safecracker
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 13237 Accepted Submission(s): 6897
"The
item is locked in a Klein safe behind a painting in the second-floor
library. Klein safes are extremely rare; most of them, along with Klein
and his factory, were destroyed in World War II. Fortunately old
Brumbaugh from research knew Klein's secrets and wrote them down before
he died. A Klein safe has two distinguishing features: a combination
lock that uses letters instead of numbers, and an engraved quotation on
the door. A Klein quotation always contains between five and twelve
distinct uppercase letters, usually at the beginning of sentences, and
mentions one or more numbers. Five of the uppercase letters form the
combination that opens the safe. By combining the digits from all the
numbers in the appropriate way you get a numeric target. (The details of
constructing the target number are classified.) To find the combination
you must select five letters v, w, x, y, and z that satisfy the
following equation, where each letter is replaced by its ordinal
position in the alphabet (A=1, B=2, ..., Z=26). The combination is then
vwxyz. If there is more than one solution then the combination is the
one that is lexicographically greatest, i.e., the one that would appear
last in a dictionary."
v - w^2 + x^3 - y^4 + z^5 = target
"For
example, given target 1 and letter set ABCDEFGHIJKL, one possible
solution is FIECB, since 6 - 9^2 + 5^3 - 3^4 + 2^5 = 1. There are
actually several solutions in this case, and the combination turns out
to be LKEBA. Klein thought it was safe to encode the combination within
the engraving, because it could take months of effort to try all the
possibilities even if you knew the secret. But of course computers
didn't exist then."
=== Op tech directive, computer division, 2002/11/02 12:30 CST ===
"Develop
a program to find Klein combinations in preparation for field
deployment. Use standard test methodology as per departmental
regulations. Input consists of one or more lines containing a positive
integer target less than twelve million, a space, then at least five and
at most twelve distinct uppercase letters. The last line will contain a
target of zero and the letters END; this signals the end of the input.
For each line output the Klein combination, break ties with
lexicographic order, or 'no solution' if there is no correct
combination. Use the exact format shown below."
#include<iostream>
#include<cstdio>
#include<cmath>
#include<map>
#include<cstdlib>
#include<vector>
#include<set>
#include<queue>
#include<cstring>
#include<string.h>
#include<algorithm>
#define INF 0x3f3f3f3f
typedef long long ll;
typedef unsigned long long LL;
using namespace std;
const int N = 1e6+;
const ll mod = 1e9+;
char s[];
int a[];
int b[];
int visited[];
int n;
int flag=;
void DFS(int t){
if(flag==)return;
if(t==){
int sum1=b[]+b[]*b[]*b[]+b[]*b[]*b[]*b[]*b[];
int sum2=b[]*b[]+b[]*b[]*b[]*b[];
if(sum1-sum2==n){
flag=;
printf("%c%c%c%c%c\n",b[]-+'A',b[]-+'A',b[]-+'A',b[]-+'A',b[]-+'A');
return ;
}
return ;
}
for(int i=;i>=;i--){
if(visited[i]==)continue;
else if(visited[i]==&&a[i]==){
visited[i]=;
b[t]=i;
DFS(t+);
visited[i]=;
}
}
}
int main(){
while(scanf("%d %s",&n,s)!=EOF){
if(n==&&strcmp(s,"END")==)break;
int len=strlen(s);
flag=;
memset(a,,sizeof(a));
for(int i=;i<len;i++){
int tt=s[i]-'A'+;
a[tt]=;
}
memset(visited,,sizeof(visited));
DFS();
if(flag==)cout<<"no solution"<<endl; } }
hdu 1015(DFS)的更多相关文章
- HDOJ(HDU).1015 Safecracker (DFS)
HDOJ(HDU).1015 Safecracker [从零开始DFS(2)] 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双重DFS HDOJ.1 ...
- hdu 1342(DFS)
Lotto Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- F - JDG HDU - 2112 (最短路)&& E - IGNB HDU - 1242 (dfs)
经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候,XHD夫妇也退居了二线,并在风景秀美的诸暨市浬 ...
- F - Auxiliary Set HDU - 5927 (dfs判断lca)
题目链接: F - Auxiliary Set HDU - 5927 学习网址:https://blog.csdn.net/yiqzq/article/details/81952369题目大意一棵节点 ...
- hdu - 1072(dfs剪枝或bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1072 思路:深搜每一个节点,并且进行剪枝,记录每一步上一次的s1,s2:如果之前走过的时间小于这一次, ...
- HDU——2647Reward(DFS或差分约束)
Reward Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- P - Sudoku Killer HDU - 1426(dfs + map统计数据)
P - Sudoku Killer HDU - 1426 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为 ...
- hdu 1142(DFS+dijkstra)
#include<iostream> #include<cstdio> #include<cmath> #include<map> #include&l ...
- hdu 1181(DFS)变 形 课
变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submis ...
随机推荐
- 提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
转自http://blog.163.com/zhangjie_0303/blog/static/9908270620146951355834/ 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 w ...
- Android_Fragment(碎片)知识点讲解
今天我们来了解下Android 中的fragment(碎片)这个东西. Fragment 从英文翻译而言是碎片,片段的意思.那么这个东西是什么,在Android 中有什么用呢? 一.概念 Fragme ...
- html window.open 使用详解
window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no ...
- Linux Daemon 类程序
1.后台daemon程序(精灵程序) 在Linux中专门提供了一个函数来完成这个daemon化的过程,这个函数的原型如下 int daemon (int __nochdir, int __noclos ...
- spring 整合hibernate
1. Spring 整合 Hibernate 整合什么 ? 1). 有 IOC 容器来管理 Hibernate 的 SessionFactory2). 让 Hibernate 使用上 Spring 的 ...
- 假装这些是MyEclipse的快捷键(1)
Java快捷键 Alt + / 代码自动补全Alt + Shift + S 功能菜单 Ctrl + 1 代码自动修正Ctrl + / 单行注释/取消Ctrl + O 查看类的所有方法Ctrl + T ...
- 转载---ViewPager,PagerAdapter,FragmentPagerAdapter和FragmentStatePagerAdapter的分析对比
转载:http://blog.csdn.net/dreamzml/article/details/9951577 ViewPager ViewPager 如其名所述,是负责翻页的一个 View.准确说 ...
- angular+ionic返回上一页并刷新
假定当前页面为editCata页面,要返回的是cataDetail页面.目前我找到两种方法实现返回上一页并刷新,如果以后有其它方法,再继续添加. 1.在editCataCtrl.js中注入$ionic ...
- SQL SERVER With语法[转]
今天在论坛上看到一个举例,关于sql server 的示例.1/25/50/100美分,多少种可能拼凑成2美元. 看了其中第一条语法,放在SQL SERVER中测试,发现真的列举出所有组合成2美元的方 ...
- CSS浮动布局与菜单栏设计
公司周六停电,终于可以双休了.用周五空余时间再夯实一下css基础,<CSS权威指南>概念性的内容看起来容易犯困,不如实践来得快,动手操作吧. 一.浮动布局 浮动存在问题:浮动使元素脱离文档 ...