Infinite Fraction Path

Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 5756    Accepted Submission(s): 1142

Problem Description
The ant Welly now dedicates himself to urban infrastructure. He came to the kingdom of numbers and solicited an audience with the king. He recounted how he had built a happy path in the kingdom of happiness. The king affirmed Welly’s talent and hoped that this talent can help him find the best infinite fraction path before the anniversary.
The kingdom has N cities numbered from 0 to N - 1 and you are given an array D[0 ... N - 1] of decimal digits (0 ≤ D[i] ≤ 9, D[i] is an integer). The destination of the only one-way road start from the i-th city is the city labelled (i2 + 1)%N.
A path beginning from the i-th city would pass through the cities u1,u2,u3, and so on consecutively. The path constructs a real number A[i], called the relevant fraction such that the integer part of it is equal to zero and its fractional part is an infinite decimal fraction with digits D[i], D[u1], D[u2], and so on.
The best infinite fraction path is the one with the largest relevant fraction
 
Input
The input contains multiple test cases and the first line provides an integer up to 100 indicating to the total numberof test cases.
For each test case, the first line contains the integer N (1 ≤ N ≤ 150000). The second line contains an array ofdigits D, given without spaces.
The summation of N is smaller than 2000000.
 
Output
For each test case, you should output the label of the case first. Then you are to output exactly N characters which are the first N digits of the fractional part of the largest relevant fraction.
 
Sample Input
4
3
149
5
12345
7
3214567
9
261025520
 
Sample Output
Case #1: 999
Case #2: 53123
Case #3: 7166666
Case #4: 615015015
 
Source
 
Recommend
jiangzijing2015   |   We have carefully selected several similar problems for you:  6730 6729 6728 6727 6726 
 
这题要注意的细节还是有点多的,算是比较细腻处理的bfs的题目了.
 /*************************************************************************
> File Name: hdu-6223.infinite_fraction_path.cpp
> Author: CruelKing
> Mail: 2016586625@qq.com
> Created Time: 2019年09月18日 星期三 15时57分37秒
本题思路:BFS暴力,先找出最大的几个数的位置,接着bfs每次寻找下一层最大的值,直到
找到答案为止.
注意剪枝:1.如果在当前层寻找到了比最大值小的值直接pop.
2.如果当前层有多个结点通往下一层的同一个结点,只需要保留一个就行了.
************************************************************************/ #include <cstdio>
#include <queue>
#include <cstring>
using namespace std; typedef long long ll; const int maxn = + ;
char str[maxn], ans[maxn]; int M[maxn], tot;
bool vis[maxn]; int n; ll sta[maxn], top; struct node {
ll index, step;
}; bool operator < (node a, node b) {
if(a.step == b.step) return str[a.index] < str[b.index];
return a.step > b.step;
} void bfs() {
priority_queue <node> que;
for(int i = ; i < tot; i ++) {
que.push((node) {M[i], });//最大值入队列
}
ll last = ;
while(!que.empty()) {
node now = que.top();
que.pop();
if(last != now.step) {
last = now.step;
while(top) vis[sta[-- top]] = false;//把当前标记过得结点都释放,因为他们还可以继续访问
}
if(ans[now.step] > str[now.index] || now.step >= n || vis[now.index]) continue;//如果在当前层当前位置已经被访问过了就跳过这个结点, 如果当前已经找到了n个数就跳过这个结点,如果已经当前结点字典序小于之前访问过的最大值就跳过这个结点
sta[top ++] = now.index;//把当前访问的结点放入队列并标记
vis[now.index] = true;
ans[now.step] = str[now.index];//更新答案
que.push((node) {(now.index * now.index + ) % n, now.step + });//跳跃
}
while(top) vis[sta[-- top]] = false;
ans[n] = '\0';
} int _case; void print() {
printf("Case #%d: %s\n", ++_case, ans);
} int main() {
int t, _case = ;
int Max;
char k;
scanf("%d", &t);
while(t --) {
for(int i = ; i < n; i ++) ans[i] = ;
k = ;
tot = ;
scanf("%d", &n);
scanf("%s", str);
for(int i = ; i < n; i ++) {
if(str[i] > k) {
k = str[i];
}
}
for(int i = ; i < n; i ++) {
if(str[i] == k) {
M[tot ++] = i;//存储字符串中的最大值
}
}
bfs();
print();
}
return ;
}

2017沈阳区域赛Infinite Fraction Path(BFS + 剪枝)的更多相关文章

  1. HDU6223 Infinite Fraction Path bfs+剪枝

    Infinite Fraction Path 这个题第一次看见的时候,题意没搞懂就没做,这第二次也不会呀.. 题意:第i个城市到第(i*i+1)%n个城市,每个城市有个权值,从一个城市出发走N个城市, ...

  2. HDU6223 && 2017沈阳ICPC: G. Infinite Fraction Path——特殊图&&暴力

    题意 给定一个数字串,每个位子都能向(i*i+1)%n的位子转移,输出在路径上.字典序最大的.长度为n的串($n \leq 150000$). 分析 先考虑一个暴力的方法,考虑暴力每个x,然后O(n) ...

  3. hdu6223 Infinite Fraction Path 2017沈阳区域赛G题 bfs加剪枝(好题)

    题目传送门 题目大意:给出n座城市,每个城市都有一个0到9的val,城市的编号是从0到n-1,从i位置出发,只能走到(i*i+1)%n这个位置,从任意起点开始,每走一步都会得到一个数字,走n-1步,会 ...

  4. 2017 ACM/ICPC 沈阳 G题 Infinite Fraction Path

    The ant Welly now dedicates himself to urban infrastructure. He came to the kingdom of numbers and s ...

  5. Infinite Fraction Path HDU 6223 2017沈阳区域赛G题题解

    题意:给你一个字符串s,找到满足条件(s[i]的下一个字符是s[(i*i+1)%n])的最大字典序的长度为n的串. 思路:类似后缀数组,每次倍增来对以i开头的字符串排序,复杂度O(nlogn).代码很 ...

  6. hdu6229 Wandering Robots 2017沈阳区域赛M题 思维加map

    题目传送门 题目大意: 给出一张n*n的图,机器人在一秒钟内任一格子上都可以有五种操作,上下左右或者停顿,(不能出边界,不能碰到障碍物).题目给出k个障碍物,但保证没有障碍物的地方是强联通的,问经过无 ...

  7. HDU 6229 Wandering Robots(2017 沈阳区域赛 M题,结论)

    题目链接  HDU 6229 题意 在一个$N * N$的格子矩阵里,有一个机器人. 格子按照行和列标号,左上角的坐标为$(0, 0)$,右下角的坐标为$(N - 1, N - 1)$ 有一个机器人, ...

  8. Heron and His Triangle 2017 沈阳区域赛

    A triangle is a Heron’s triangle if it satisfies that the side lengths of it are consecutive integer ...

  9. 2017 ICPC/ACM 沈阳区域赛HDU6223

    Infinite Fraction Path Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java ...

随机推荐

  1. set uniion()

    union()方法返回两个集合的并集,包含所有集合的元素,重复元素只会出现一次. 语法: set.union(set1,set2) 参数: set1必填参数,合并的目标集合 set2选填参数,其他要合 ...

  2. CodeForces-721A-One-dimensional Japanese Crossword

    链接: https://vjudge.net/problem/CodeForces-721A 题意: Recently Adaltik discovered japanese crosswords. ...

  3. 目标检测Object Detection概述(Tensorflow&Pytorch实现)

    1999:SIFT 2001:Cascades 2003:Bag of Words 2005:HOG 2006:SPM/SURF/Region Covariance 2007:PASCAL VOC 2 ...

  4. Shell 变量/echo命令

    Shell 教程 Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个界面,用户 ...

  5. Luogu P5469 [NOI2019]机器人 (DP、多项式)

    不用FFT的多项式(大雾) 题目链接: https://www.luogu.org/problemnew/show/P5469 (这题在洛谷都成绿题了海星) 题解: 首先我们考虑,一个序列位置最右边的 ...

  6. Hive分析窗口函数(一) SUM,AVG,MIN,MAX

    Hive分析窗口函数(一) SUM,AVG,MIN,MAX Hive分析窗口函数(一) SUM,AVG,MIN,MAX Hive中提供了越来越多的分析函数,用于完成负责的统计分析.抽时间将所有的分析窗 ...

  7. vue 路由懒加载 resolve vue-router配置

    使用方法 component:resolve => require(['@/pages/About'],resolve) //"@"相当于".." 懒加载 ...

  8. css命名和书写规范

    前言 在项目开发中对于css名字的命名和书写老是感觉很混乱,这对于代码的可读性以及维护提出了挑战,所以在闲暇之余看了一些这方面的内容,现总结如下... 1.命名规则说明 所有的命名最好都小写 属性的值 ...

  9. js的浅拷贝和深拷贝和应用场景

    为什么会用到浅拷贝和深拷贝 首先来看一下如下代码 let a = b = 2 a = 3 console.log(a) console.log(b) let c = d = [1,2,3] let e ...

  10. linux 设置 hugepage

    临时设置 hugepage > /sys/kernel/mm/hugepages/hugepages-16384kB/nr_hugepages 查看是否设置成功 cat /proc/meminf ...