AtCoder Beginner Contest 167   比赛人数11940  比赛开始后15分钟看到A题,之后每隔一分钟,看到一道题,在比赛开始后第21分钟看到所有题

AtCoder Beginner Contest 167  D   Teleporter   找周期

总目录详见https://blog.csdn.net/mrcrack/article/details/104454762

在线测评地址https://atcoder.jp/contests/abc167/tasks/abc167_d

在离比赛结束前,不到3分钟时,第一发WA.在离比赛结束前5s,第二发,按下提交按钮的同时,比赛也弹出对话框说,结束,一看结果,在21:40到达前,竟然提交成功了,21:40之后看了看,AC了,这种情况比赛算成绩吗,不断的刷新网站,22:04才发现,比赛承认这次提交的成绩。不得不说,最后阶段,提交的灵敏度,AtCoder强于CodeForces.

真是佩服自己有颗强大的心脏。用了25分钟,从读题开始,中间WA了一次,到AC.

样例1

1->3->4->1周期是3

5%3=2,这2次这样走1->3->4,故最后位置是4

样例2

1->6->2->5->3->2

2->5->3->2周期是3

请注意,之前还多了一段1->6->2,这段次数是2

首先扣除次数是2的多余段727202214173249351-2=727202214173249349

727202214173249349%3=0很明显,回到周期的起始位置2

AC代码如下

#include <stdio.h>
#define LL long long
#define maxn 200010
LL k,t;
int n,a[maxn],vis[maxn];
int main(){int i,nx,s,b,c;scanf("%d%lld",&n,&k);for(i=1;i<=n;i++)scanf("%d",&a[i]);nx=1;//请注意,从位置1开始while(1){vis[nx]=1,nx=a[nx];if(vis[nx]){s=nx;break;}//寻找周期的起始位置s}nx=s;//请注意,从位置s开始for(i=1;i<=n;i++)vis[i]=0;while(1){vis[nx]=1,nx=a[nx],t++;//计算周期长度tif(vis[nx])break;}b=0,nx=1;//请注意,从位置1开始while(1){if(nx==s)break;nx=a[nx],b++;//计算周期正式开始前,多出的次数b}c=0;if(k<=b){//k值较小,还没有正式开始周期nx=1;while(1){if(k==c)break;nx=a[nx],c++;}printf("%d\n",nx);return 0;}k-=b;k%=t;//k值较大,先扣除周期正式开始前,多出的次数b{nx=s;//请注意,从位置s开始c=0;while(1){if(k==c)break;nx=a[nx],c++;}printf("%d\n",nx);}
}

AtCoder Beginner Contest 167 D Teleporter 找周期相关推荐

  1. AtCoder Beginner Contest 167 F.Bracket Sequencing

    AtCoder Beginner Contest 167 F.Bracket Sequencing 题目链接 判断括号匹配的字符串问题~ 首先给出的所有字符串的左右括号数是要匹配的,这个很好判断,用一 ...

  2. AtCoder Beginner Contest 167 A Registration 字符串比较

    AtCoder Beginner Contest 167   比赛人数11940  比赛开始后15分钟看到A题,之后每隔一分钟,看到一道题,在比赛开始后第21分钟看到所有题 AtCoder Begin ...

  3. AtCoder题解——Beginner Contest 167——C - Skill Up

    题目相关 题目链接 AtCoder Beginner Contest 167 C题,https://atcoder.jp/contests/abc167/tasks/abc167_c. Problem ...

  4. AtCoder Beginner Contest 161 C Replacing Integer 公式推导

    AtCoder Beginner Contest 161   比赛人数9927  快,比赛开始后5分钟看到所有题 AtCoder Beginner Contest 161 C  Replacing I ...

  5. AtCoder题解 —— AtCoder Beginner Contest 182 —— D - Wandering

    题目相关 题目链接 AtCoder Beginner Contest 182 D 题,https://atcoder.jp/contests/abc182/tasks/abc182_d. Proble ...

  6. Atcoder Beginner Contest 260D - Draw Your Cards 解题报告

    Atcoder Beginner Contest 260D - Draw Your Cards 解题报告 1 题目链接 abc260_d 2 题目大意 题目 : 抽牌 题目大意 : 给定NNN个数字, ...

  7. AtCoder Beginner Contest 175 E.Picking Goods

    AtCoder Beginner Contest 175 E.Picking Goods 题目链接 典型的 DP,如果不加限制条件的话就是从上到下找一条最长路,但是限制了每行只能选 3 个,所以就多加 ...

  8. AtCoder Beginner Contest 165 D Floor Function 公式推导

    AtCoder Beginner Contest 165   比赛人数11730  比赛开始后15分钟看到所有题 AtCoder Beginner Contest 165  D  Floor Func ...

  9. AtCoder Beginner Contest 272「A」「B」「C」「D bfs」「E 思维」

    AtCoder Beginner Contest 272 A - Integer Sum 题目描述: 输入n个数字,求数字和 #include <bits/stdc++.h> using ...

最新文章

  1. 干货丨科普丨大牛的《深度学习》笔记,Deep Learning速成教程
  2. Node.Js 学习随笔2
  3. 大庆东风中学高考成绩查询2021年,2021年大庆中考成绩和分数线什么时候公布(附查询入口)...
  4. Java虚拟机(JVM)简介
  5. springmvc 拦截器_Spring MVC拦截器学习
  6. 10打开没有反应_118个遇水反应化学品清单及高压反应釜操作经验
  7. Nginx何防止流量攻击
  8. mysqlbinlog
  9. Codeforces 1039D You Are Given a Tree (看题解)
  10. 【Verilog】组合逻辑写法
  11. erp服务器性能测试,浪潮PS-ERP压力测试报告--AMD单路服务器
  12. SQL2005下载版本之区别
  13. 将lena图片进行简单处理
  14. Indicate whether to send a cookie in a cross-site request by specifying its SameSite attribute
  15. Kubernetes:排错指南 - Pod
  16. 搞副业被领导发现了,让我要么停止,要么滚蛋!
  17. Origin绘图—如何添加参考线
  18. 关于vSphere vMotion的讨论 -3
  19. 读书笔记-袁腾飞讲高效学习法
  20. 如何实现根据照片获取地理位置及如何防御照片泄漏地理位置

热门文章

  1. centos 安装迅搜
  2. 学术期刊《中华全科医学》
  3. 华为设备配置SSH远程登录
  4. 2020年7月1日打卡
  5. 推荐/广告算法社招生存指南(浅梦)
  6. 商务通“隐形手机”牛皮轰轰可以休矣!
  7. 西工大计算机操作系统实验报告,西工大计算机操作系统课程设计实验报告bh05xh5...
  8. 研究生周报(第十九周)
  9. 省协湖北中心 计算机科学与技术,国家知识产权局专利局专利审查协作湖北中心...
  10. 小苹果歌词――筷子兄弟