HDU6223 && 2017沈阳ICPC: G. Infinite Fraction Path——特殊图&&暴力
题意
给定一个数字串,每个位子都能向(i*i+1)%n的位子转移,输出在路径上、字典序最大的、长度为n的串($n \leq 150000$)。
分析
先考虑一个暴力的方法,考虑暴力每个x,然后O(n)判定形成的字符串字典序是否比当前的最优解要大,复杂度O(n²),显然大家都会做。
而本题中有个结论:没有必要每次O(n),只要前100个字符一样,那么后面的一定都一样!所以>500直接break,复杂度O(500n), 可以过!
理解:对于所有的下标k,k向(k*k+1)%n连一条有向边,最后可以得到若干棵基环树构成的森林,这个森林有三个性质:①基环树特别的多;②每棵基环树环特别的小;③叶子巨多;这样子的话,字符串一定会很快进入一个环,两个字符串前面相等后面就一定都相等了.
回头想一下,当时就应该“乱搞”,这种图肯定比较简单,因为出题人也没法特意搞极端情况,这是由数字的性质决定的。
#include<bits/stdc++.h>
using namespace std; const int maxn = + ;
char s[maxn];
int n;
int nxt[maxn]; int main()
{
int T, kase=;
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
scanf("%s", s);
for(int i = ;i < n;i++) nxt[i] = (1LL * i * i + ) % n;
char start = '';
for(int i = ;i < n;i++) if(s[i] > start) start = s[i];
int res = ;
for(int i = ;i < n;i++)
{
int cur = i, p = res;
if(s[i] == start)
{
for(int j = ;j < ;j++)
{
if(s[cur] < s[p]) break;
if(s[cur] > s[p]) {res = i; break;}
cur = nxt[cur];
p = nxt[p];
}
}
}
printf("Case #%d: ", ++kase);
for(int i = ;i < n;i++)
{
printf("%c", s[res]);
res = nxt[res];
}
printf("\n");
}
return ;
}
参考链接:https://blog.csdn.net/Jaihk662/article/details/81987188?tdsourcetag=s_pctim_aiomsg
HDU6223 && 2017沈阳ICPC: G. Infinite Fraction Path——特殊图&&暴力的更多相关文章
- 2017沈阳区域赛Infinite Fraction Path(BFS + 剪枝)
Infinite Fraction Path Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java ...
- 2017 icpc 沈阳 G - Infinite Fraction Path
题目大意:有n个点, 每个点有一个数字0 - 9, 第 i 个点只能到 第(i * i + 1)个点,问你在哪个点出发走n次构成的数字串最大. 思路:利用求后缀数组的倍增比较思想, 许多细节需要注意. ...
- HDU6223——2017ICPC沈阳G Infinite Fraction Path
题意: 给定一个数字串,每个位子都能向(i*i+1)%n的位子转移,输出路径上,字典序最大的,长度为n的串. 参考:https://www.cnblogs.com/mountaink/p/954144 ...
- ACM-ICPC 2017 沈阳赛区现场赛 G. Infinite Fraction Path && HDU 6223(BFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6223 参考题解:https://blog.csdn.net/qq_40482495/article/d ...
- hdu6223 Infinite Fraction Path 2017沈阳区域赛G题 bfs加剪枝(好题)
题目传送门 题目大意:给出n座城市,每个城市都有一个0到9的val,城市的编号是从0到n-1,从i位置出发,只能走到(i*i+1)%n这个位置,从任意起点开始,每走一步都会得到一个数字,走n-1步,会 ...
- 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 ...
- HDU6223 Infinite Fraction Path bfs+剪枝
Infinite Fraction Path 这个题第一次看见的时候,题意没搞懂就没做,这第二次也不会呀.. 题意:第i个城市到第(i*i+1)%n个城市,每个城市有个权值,从一个城市出发走N个城市, ...
- 记2017沈阳ICPC
2017沈阳ICPC 10月20日 早上十点抵达沈阳,趁着老师还没到,跑去故宫游玩了一下,玩到一点多回到宾馆,顺便吃了群里大佬说很好吃的喜家德虾饺(真的好好吃),回到宾馆后身体有点不舒服了,头晕晕的, ...
- Infinite Fraction Path HDU 6223 2017沈阳区域赛G题题解
题意:给你一个字符串s,找到满足条件(s[i]的下一个字符是s[(i*i+1)%n])的最大字典序的长度为n的串. 思路:类似后缀数组,每次倍增来对以i开头的字符串排序,复杂度O(nlogn).代码很 ...
随机推荐
- 前后台$.post交互并返回JSON对象
1.前台代码: $.post(url,{"blogId":blogId},function(reData){ if(reData.state=="success" ...
- python read readline readlines区别
file 对象使用 open 函数来创建,下表列出了 file 对象常用函数read.readline.readlines区别: 1.从文件读取指定的字节数,size如果未给定或为负则读取所有. fi ...
- SpringBoot第十二篇:整合jsp
作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10953600.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言 Sprin ...
- 【MySQL】binlog2sql
binlog2sql 1.安装 shell> git clone https://github.com/danfengcao/binlog2sql.git && cd binlo ...
- JavaIO学习:转换流
转换流 1.涉及到的类 InputStreamReader:将InputStream转换为Reader OutputStreamWriter:将Writer转换为OutputStream 2.构造器 ...
- Redis(九)高可用专栏之《简介篇》
在互联网的大趋势下,用户体验.服务的可用性日趋重要.任何一个服务的不可用,都可能导致连锁式功能故障. 前言 高可用模型的已经逐渐形成一种套路: 主备/主从模式 集群模式 主备/主从模式 至少有两台服务 ...
- KVM虚拟机网络配置 Bridge方式,NAT方式
https://blog.csdn.net/hzhsan/article/details/44098537/
- EF Core中如何设置数据库表自己与自己的多对多关系
本文的代码基于.NET Core 3.0和EF Core 3.0 有时候在数据库设计中,一个表自己会和自己是多对多关系. 在SQL Server数据库中,现在我们有Person表,代表一个人,建表语句 ...
- mysql 查询数据库表信息,字段信息
#======================================================================= #查询表信息 select table_name, t ...
- JS 弹窗“是否删除”
var r = confirm("是否确认删除!");if (r == true) {location.href = "/Employees/Delete/" ...