P5582 SWTR-01Escape
Posted xiongchongwen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P5582 SWTR-01Escape相关的知识,希望对你有一定的参考价值。
题目背景
Sunny finds a mysterious place.Sunny finds a mysterious place.
But he is trapped inside.But he is trapped inside.
有一天,当 SunnySunny 闲逛的时候,发现了一个按钮
好奇心驱使他按下了这个按钮
突然间,天旋地转 dots…
已新增一组样例
题目描述
醒来之后,Sunny 发现自己站在一个奇怪的地方
这个地方有 n 个平台,形成了一个环
这时,Ethan 的声音响起:
“哈哈哈哈哈哈,恭喜你,你是第一个来到死亡之地的人”
“正如你所看到的,这个地方有 n 个平台,你现在站在 00 号平台上”
“剩余平台按顺时针编号 1,2,3dots n-11,2,3…n−1 ”
“也就是说,你身后的那个平台就是 n-1n−1 号平台”
“你每次能够顺时针跳 i 个平台,iin[1,n]i∈[1,n] ”
(每次的 ii 可以不一样!!)
“如果你能够经过所有平台(初始 00 号位置不算),那你就能逃出死亡之地了”
(这里指的是一开始的 00 号位置不算经过,需要再次经过 00 号位置)
“不过,这样太简单了,我会给你一些数 a_jaj?,表示你不能一次顺时针跳 a_jaj? 个平台”
“还有,你必须要用最少的跳跃次数完成我的任务”
“如果你不能满足我的上面两个要求,所有平台就会消失,你将会掉入下面的岩浆之中”
现在,Sunny 想知道他是否可能逃出这个地方
如果不行,输出 -1−1
如果可以,输出他最少所需的跳跃次数
因为 Sunny 觉得死亡之地实在是太有趣了,所以他决定多玩几次,多组数据!!!
输入格式
第一行,一个正整数 TT,代表数据组数
接下来 2T2T 行,共 TT 组数据:
第 2*i-12∗i−1 行,两个整数 n,kn,k,kk 代表该组数据 a_jaj? 的个数
第 2*i2∗i 行,kk 个数,第 jj 个数表示 a_jaj?
输出格式
TT 行,第 ii 行表示第 ii 组数据的输出
输入输出样例
3 5 4 1 2 3 4 5 4 1 2 4 5 6 3 1 3 5
-1 5 -1
说明/提示
样例说明
第一组数据:
Sunny 每次只能顺时针跳 5 个平台,易知不可能完成
第二组数据:
Sunny 每次只能顺时针跳 3 个平台,跳 5 次即可
数据范围
kleq nleq 10^6k≤n≤106
0leq k0≤k
1leq n1≤n
保证 sum{n_i}leq 3*10^6∑ni?≤3∗106
a_ileq nai?≤n,且互不相同
测试点 1:5\%,n=11:5%,n=1
测试点 2:5\%,nleq52:5%,n≤5
测试点 3:10\%,nleq153:10%,n≤15
测试点 4:15\%,nleq3004:15%,n≤300
测试点 5:25\%,nleq50005:25%,n≤5000
测试点 6:40\%,nleq10^66:40%,n≤106
本题较为卡空间
请使用 scanfscanf!
梦醒了……
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<queue> using namespace std; int t,a[1000610]; bool pd[1000610]; int read(){ int a=0,b=1; char ch=getchar(); while((ch<48||ch>57)&&ch!=‘-‘){ ch=getchar(); } if(ch==‘-‘){ b=-1; ch=getchar(); } while(ch<48||ch>57){ ch=getchar(); } while(ch>47&&ch<58){ a=a*10+ch-48; ch=getchar(); } return a*b; } int gcd(int a,int b){ return !b?a:gcd(b,a%b); } int main(){ t=read(); for(int l=0;l<t;l++){ int n,k,d; n=read(),k=read(); d=n; for(int i=1;i<=k;i++){ a[i]=read(); pd[a[i]]=1; } if((n==1)&&(k==1)){ printf("-1 "); pd[1]=0; continue; } for(int i=1;i<=n;i++){ if(!pd[i]){ d=gcd(d,i); } } if(d>1){ printf("-1 "); } else{ printf("%d ",n); } for(int i=1;i<=k;i++){ pd[a[i]]=0; } } return 0; }
以上是关于P5582 SWTR-01Escape的主要内容,如果未能解决你的问题,请参考以下文章
P5584 SWTR-01Sunny‘s Crystals(贪心线段树)
即使我们正在清理输入 mysql_real_escape_string 的 SQL 注入漏洞代码
Python“string_escape”与“unicode_escape”
htmlspecialchars 和 mysql_real_escape_string 是不是可以防止我的 PHP 代码被注入?