算法问题实战策略 CHILDRENDAY
地址 https://algospot.com/judge/problem/read/CHILDRENDAY

题解



ac代码
#include <iostream>
#include <algorithm>
#include <queue>
#include <string>
#include <vector> using namespace std; //当前顶点的序号为here时
//经过序号为edge的边线能到达的顶点序号是多少
int append(int here, int edge, int mod)
{
int there = here * + edge;
if (there >= mod) return mod + there % mod;
return there % mod;
} //找出仅由digits内的数组组成
//且满足C mod n == m的最小的C
string gifts(string digits, int n, int m)
{
//如果按照升序排列边线序号
//就能找出按照字典顺序排在最前面的路径
sort(digits.begin(),digits.end()); //白色顶点i表示为0号~n-1号的顶点 灰色顶点i表示为n号~2n-1号的顶点
//parent[i]=BFS生成树中顶点i的父节点
//choice[i]=从parent[i]连向i的边线序号
vector<int> parent( * n, -), choice( * n, -);
queue<int> q;
//将白色0号加入队列
parent[] = ;
q.push();
while (!q.empty()) {
int here = q.front();
q.pop();
for (int i = ; i < digits.size(); i++) {
//跟踪边线digits[i[-'0'
int there = append(here, digits[i] - '', n);
if (parent[there] == -) {
parent[there] = here;
choice[there] = digits[i] - '';
q.push(there);
}
}
} //未能达到灰色m号 则失败!
if (parent[n + m] == -) return "IMPOSSIBLE";
//跟踪连向父节点的路径并计算C
string ret;
int here = n + m;
while (parent[here] != here) {
ret += char('' + choice[here]);
here = parent[here];
}
reverse(ret.begin(), ret.end());
return ret;
} int main()
{
int n;
cin >> n;
while (n--) {
string s;
int a, b;
cin >> s >> a >> b; cout << gifts(s, a, b) << endl;
}
}
算法问题实战策略 CHILDRENDAY的更多相关文章
- 算法问题实战策略 PICNIC
下面是另一道搜索题目的解答过程题目是<算法问题实战策略>中的一题oj地址是韩国网站 连接比较慢 https://algospot.com/judge/problem/read/PICNIC ...
- 《算法问题实战策略》-chaper7-穷举法
关于这一章节<算法实战策略>有一段概述问题,我认为对于编程人员来说非常有价值,故在这里进行如下的摘抄: 构想算法是很艰难的工作.相比大家都经历过,面对复杂的要求只是傻乎乎地盯着显示器,或者 ...
- 《算法问题实战策略》-chaper32-网络流
基本的网络流模型: 在图论这一块初步的应用领域中,两个最常见的关注点,其一时图中的路径长度,也就是我们常说的的最短路径问题,另一个则是所谓的“流问题”. 流问题的基本概念: 首先给出一张图. 其实所谓 ...
- 《算法问题实战策略》-chaper13-数值分析
这一章节主要介绍我们在进行数值分析常用的二分.三分和一个近似求解区间积分的辛普森法. 首先介绍二分. 其实二分的思想很好理解并且笔者在之前的一些文章中也有所渗透,对于二次函数甚至单元高次函数的零点求解 ...
- 《算法问题实战策略》——chaper9——动态规划法技巧
Q1: 数字游戏: 两个人(A.B)用n个整数排成的一排棋盘玩游戏,游戏从A开始,每个人有如下操作: (1) 拿走棋盘最右侧或者最左侧的棋子,被拿走的数字从棋盘中抹掉. (2) 棋盘中还剩 ...
- 《算法问题实战策略》-chaper8-动态规划法
Q1:偶尔在电视上看到一些被称为“神童”的孩子们背诵小数点以后几万位的圆周率.背诵这么长的数字,可利用分割数字的方法.我们用这种方法将数字按照位数不等的大小分割后再背诵. 分割形式如下: 所有数字都相 ...
- 《算法问题实战策略》-chaper21-树的实现和遍历
这一章节开始介绍一个数据结构中的一个基本概念——树. 我们从数据结构的解读来解释树结构的重要性,现实世界的数据除了最基本的线性结构(我们常用队列.数组和链表等结构表征),还有一个重要的特性——层级结构 ...
- 算法问题实战策略 QUADTREE
地址 https://algospot.com/judge/problem/read/QUADTREE 将压缩字符串还原后翻转再次压缩的朴素做法 在数据量庞大的情况下是不可取的 所以需要在压缩的情况下 ...
- 算法问题实战策略 DICTIONARY
地址 https://algospot.com/judge/problem/read/DICTIONARY 解法 构造一个26字母的有向图 判断无回路后 就可以输出判断出来的字符序了 比较各个字母的先 ...
随机推荐
- 5分钟搞定Jenkis
目录 什么是持续集成 Jenkins简介 Jenkins安装与启动 Jenkins插件安装 全局工具配置 自动安装 本地安装 代码上传至Git服务器 任务的创建与执行 Go项目 JAVA项目 @ 什么 ...
- CODING 2.0:为什么我们需要 DevOps
CODING 在前两天的 Kubecon 2019 大会上发布了 CODING 2.0.这背后是 CODING 对研发管理和研发团队组建的思考.从 CODING 成立以来,我们一直在探索"让 ...
- 关于web.xml配置的那些事儿
参考文章:重新认识web.xml
- Pipe——高性能IO(二)
Pipelines - .NET中的新IO API指引(一) Pipelines - .NET中的新IO API指引(二) 关于System.IO.Pipelines的一篇说明 System.IO.P ...
- IT兄弟连 HTML5教程 CSS3揭秘 CSS常见的样式属性和值3
5 边框属性 边框属性用于设置一个元素的边框风格.边框宽度.边框颜色,可以一起设置4条边的边框,也可对上边框.右边框.下边框和左边框单独设置.分别介绍如下. a.边框风格属性 可以通过边框风格属性b ...
- Exe4j 打包: this executable was created with an evaluation version of exe4j
异常 this executable was created with an evaluation version of exe4j 异常.png 问题原因 当前打包使用exe4j未授权 解决方法 ...
- js里面的键盘事件对应的码值
键盘事件对应的码值keyCode 8 = BackSpace BackSpacekeyCode 9 = Tab TabkeyCode 12 = ClearkeyCode 13 = EnterkeyCo ...
- cisco ssh实验--附带配置脚本-2019.11.19
cisco ssh实验
- C - Train Problem II——卡特兰数
题目链接_HDU-1023 题目 As we all know the Train Problem I, the boss of the Ignatius Train Station want to ...
- 微信公众号支付提示当前页面的URL未注册
问题: 记一下前端时间自己做了一个微信公众号支付的功能,因为有一段时间没有接触过了微信支付方面的开发,居然忘记了在微信商户商户号中配置了对应的支付目录,所以提示我当前的域名是没有注册的. 设置支付目录 ...