Infinite Fraction Path

这个题第一次看见的时候,题意没搞懂就没做,这第二次也不会呀。。

题意:第i个城市到第(i*i+1)%n个城市,每个城市有个权值,从一个城市出发走N个城市,就可以得到一个长度为N的权值序列,求字典序最大的序列。

首先因为每个城市的出度为1,所以从任意城市出发都可以走出N步,通过打表可以发现度数为0的点几乎占了10分之9,也就是说大部分都是相同重复的部分。

虽然经过了一系列分析,但这并没有任何用,写了一发暴力dfs,T了。然后题解做题法,有几个解法,一个是鲲鲲有想到,但是卡常,我也不会。然后第二个就是bfs+剪枝。

有想到是搜索+剪枝,但一直想是怎么dfs记忆化,唉,太菜了。然后bfs很好理解,我们就按照深度的优先级一层层向下走,然后第一个剪枝就是,当前层已经保存的答案要是大于目前这个位置的权值,

那么很明显当前这个位置没必要扩展下去了,然后如果这个位置已经到过比现在更深的深度,那么有当前深度当那个深度之间的答案,已经被更新过了,那也没必要扩展了。

 #include<cstdio>
#include<queue>
using namespace std;
const int N=2e5+;
char mp[N];
int n,maxv,ne[N],dep[N],val[N],ans[N];
struct Node{
int pos,dep;
Node(){}
Node(int pos,int dep):pos(pos),dep(dep){}
bool operator<(const Node &n1)const{
return dep==n1.dep ? val[pos]<val[n1.pos] : dep>n1.dep;
}
}qn;
void init(){
maxv=;
for(int i=;i<=n;i++){
dep[i]=ans[i]=-;
val[i]=mp[i]-'';
maxv=max(maxv,val[i]);
ne[i]=(1ll*i*i+)%n;
}
}
void bfs(){
priority_queue<Node> q;
for(int i=;i<n;i++)
if(val[i]==maxv) q.push(Node(i,));
while(!q.empty()){
qn=q.top();
q.pop();
if(ans[qn.dep]==-) ans[qn.dep]=val[qn.pos];
else if(ans[qn.dep]>val[qn.pos]) continue;
if(dep[qn.pos]<qn.dep) dep[qn.pos]=qn.dep;
else continue;
if(qn.dep==n-) continue;
q.push(Node(ne[qn.pos],qn.dep+));
}
}
int main(){
int t=,T;
scanf("%d",&T);
while(t<=T){
scanf("%d",&n);
scanf("%s",mp);
init();
bfs();
printf("Case #%d: ",t++);
for(int i=;i<n;i++) printf("%d",ans[i]);
printf("\n");
}
return ;
}

搜索呀

HDU6223 Infinite Fraction Path bfs+剪枝的更多相关文章

  1. 2017沈阳区域赛Infinite Fraction Path(BFS + 剪枝)

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

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

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

  3. 【赛后补题】(HDU6223) Infinite Fraction Path {2017-ACM/ICPC Shenyang Onsite}

    场上第二条卡我队的题目. 题意与分析 按照题意能够生成一个有环的n个点图(每个点有个位数的权值).图上路过n个点显然能够生成一个n位数的序列.求一个最大序列. 这条题目显然是搜索,但是我队在场上(我负 ...

  4. [HDU6223]Infinite Fraction Path

    题目大意: 有$n(n\leq 150,000)$个编号为$0_n-1$格子,每个格子有一个权值$w_i(0\leq w_i\leq 9)$.从任意一个点出发,按照一定的规则进行跳转.设当前的格子为$ ...

  5. 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 ...

  6. hdu 6223 Infinite Fraction Path

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6223 题意:给定长度为n的一串数字S,现在要按照一种规则寻找长度为n的数字串,使得该数字串的字典序最大 ...

  7. Infinite Fraction Path(HDU6223 + bfs + 剪枝)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6223 题目: 题意: 给你一个长度为n的数字串,开始时你选择一个位置(记为i,下标从0开始)做为起点 ...

  8. HDU6223——2017ICPC沈阳G Infinite Fraction Path

    题意: 给定一个数字串,每个位子都能向(i*i+1)%n的位子转移,输出路径上,字典序最大的,长度为n的串. 参考:https://www.cnblogs.com/mountaink/p/954144 ...

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

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

随机推荐

  1. jupyter lab 安装

    在windows下安装jupyter 特别简单 首先你需要有Anaconda or python的环境变量,这里我就不说怎么安装环境变量了,网上一大堆教程 启动黑窗口,下载jupyter pip in ...

  2. 集成板的CodeBlocks编译器配置相关文档

    如需安装包请后台留言!! 原文链接:https://w.url.cn/s/A1RSfZP 打开安装包进行安装,除安装路径大家可以自行调整外, 其他默认即可.最后安装完成,CodeBlocks的大门即将 ...

  3. Codeforces 1247C. p-binary

    传送门 首先 $n=\sum_{i=1}^{ans}(2^{x_{ans}}+p)$ 可以变成 $n-ans \cdot p=\sum_{i=1}^{ans}2^{x_{ans}}$ 注意到如果 $n ...

  4. react 管理平台

    https://open.vbill.cn/react-admin/ 开源中国:https://gitee.com/sxfad/react-admin.git GitHub:https://githu ...

  5. html中script标签使用async属性和defer属性的区别

    相同点: 首先async和defer只对header里的外连脚本script标签上起作用,如果script标签是放在header外或者是header里的内置脚本以及动态生成的script标签是不起作用 ...

  6. c#学习笔记-string stringBuilder

    string aTest = "abc";//分配固定的内存大小 aTest += "ddd"; //销毁原先的数据再来分配,消耗大 StringBuilder ...

  7. jQuery Validation ,调用valid方法时,不验证remote

    1.问题描述 model代码如下: remote对应的action如下: view代码如下: 单击按钮时,执行如下动作 当点击按钮时,我们发现,虽然后台action验证失败,但 还是执行返回true, ...

  8. Git FLS的使用

    克隆git地址后,一些文件内容被隐藏. 显示如下: version https://git-lfs.github.com/spec/v1oid sha256:xxxxxxxxxxxxxxxxxxxxx ...

  9. scrapy增量爬取

    ​开始接触爬虫的时候还是初学Python的那会,用的还是request.bs4.pandas,再后面接触scrapy做个一两个爬虫,觉得还是框架好,可惜都没有记录都忘记了,现在做推荐系统需要爬取一定的 ...

  10. 爬虫遇到IP访问频率限制的解决方案

    背景: 大多数情况下,我们遇到的是访问频率限制.如果你访问太快了,网站就会认为你不是一个人.这种情况下需要设定好频率的阈值,否则有可能误伤.如果大家考过托福,或者在12306上面买过火车票,你应该会有 ...