您的位置:首页 > 其它

【120814测试】NOIP第二次模拟赛

2012-08-20 19:48 302 查看

NOIP第二次模拟赛

1.暴走的猴子(walk.pas/c/cpp)

【题目描述】

从前有一个森林,森林里生活着一群猴子,这里猴子有个恶趣味——暴走。现在给你这个森林里的树木描述,你能计算出这只猴子在暴走k步后会蹦达到哪里吗(友情提示:由于你上周帮助猎人写程序打死了猴子父亲,所以今天猴子特别不爽,故意暴走了很多很多步来为难你,从而导致了k非常的大,做好心里准备噢~)

【输入数据】

第一行两个数n,m表示树木数和询问次数

接下来n行,第i行一个数ai表示这只猴子当前在第i棵树的话,下一步会走到第ai棵树

接下来m行,每行两个数t,k,询问如果当前猴子在第t棵树,k步之后它会到第几棵树

【输出数据】

m行为每次询问的结果

【样例输入】

3 2

2

3

2

1 2

2 4

【样例输出】

3

2

【数据范围】

共十个测试点,每个测试点数据规模如下所示

1.n=10^2,m=n,k<=10^2

2.n=10^3,m=n,k<=10^3

3.n=10^4,m=1,k<=10^9

4.n=10^5,m=1,k<=10^9

5.n=10^5,m=1,k<=10^12

6.n=10^5,m=1,k<=10^15

7.n=10^5,m=1,k<=10^18

8.n=10^5,m=n,k<=10^12

9.n=10^5,m=n,k<=10^15

10.n=10^5,m=n,k<=10^18

【时限】

1s

很容易发现图中会有环,所以可以找循环节,这个能得70分

用动规的话能拿100分

/article/6530947.html

2.划分数列(seq.pas/c/cpp)

【题目描述】

给你一个有n个元素的数列,要求把它划分成k段,使每段元素和的最大值最小

【输入格式】

第一行两个正整数n,k

第二行为此数列ai

【输出格式】

一行一个数,为题目所求答案

【样例输入】

5 2

2 1 3 4 5

【样例输出】

9

【数据规模】

30%数据 n <= 30, k <= 10

100%数据 n <= 100000, k <= n, ai <= 10^9

150%数据 n <= 100000, k <= n, |ai| <= 10^9(附:这50分超越了noip难度,大家可以无视)

【时限】

1s

如果只用动规,是O(n3)的时间复杂度,只能拿50分

而这一题类似关押罪犯,可以用二分AC

/article/6530945.html

3.无聊的游戏(boring.pas/c/cpp)

【题目描述】

有一个很无聊的游戏,就是——根据递推公式计算数列

没错,这道题就是这么无聊!

给你数列f(0)=1, f(n)=f(n-1)^2+1 (n > 0)

求出f(n)

(既然题目已经这么无聊了,那就不让大家写高精度了,取个模好了)

【输入格式】

一个整数n

【输出格式】

一行一个整数f(n),结果对1200007取模

【样例输入】

3

【样例输出】

26

【数据规模】

10%数据 1<=n<=10

30%数据 1<=n<=10^6

100%数据 1<=n<=10^9

【时限】

1s

如果你直接按题目暴力能拿30分

这一题部分打表,能得100分

当然也可以找循环节,也能得100分

/article/6530946.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: