题目名称 | 2567. [東方] 蓬莱山·辉夜 壹 |
---|---|
输入输出 | Houraisan_Kaguya.in/out |
难度等级 | ★★★☆ |
时间限制 | 1000 ms (1 s) |
内存限制 | 256 MiB |
测试数据 | 10 |
题目来源 | sxysxy 于2016-12-06加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:8, 提交:10, 通过率:80% | ||||
6yhnju7 | 100 | 0.014 s | 0.26 MiB | C++ |
喵喵喵 | 100 | 0.014 s | 0.90 MiB | C++ |
6yhnju7 | 100 | 0.016 s | 0.29 MiB | C++ |
6yhnju7 | 100 | 0.018 s | 0.29 MiB | C++ |
6yhnju7 | 100 | 0.521 s | 0.29 MiB | C++ |
sxysxy | 100 | 0.522 s | 0.69 MiB | C++ |
WangYenJen | 100 | 0.555 s | 0.39 MiB | C++ |
shy | 100 | 1.457 s | 0.64 MiB | Pascal |
喵喵喵 | 90 | 0.013 s | 0.90 MiB | C++ |
6yhnju7 | 90 | 0.526 s | 0.29 MiB | C++ |
关于 蓬莱山·辉夜 壹 的近10条评论(全部评论) | ||||
---|---|---|---|---|
神tm会有 swap 0 0 不保证swap操作的a b不同应该说下吧
喵喵喵
2016-12-08 11:47
2楼
| ||||
Houraisan_Kaguya.in
输出文件:Houraisan_Kaguya.out
简单对比
永恒与须臾的置换!
「那就让满月从此消失于地上好了。
如此一来,当能中断连接月球与地上之间的通道。
其实从地上看到的满月,正是唯一能打开那通道的钥匙。
所以,月之使者亦只有于满月才能到访。
要是破坏那钥匙的话……
地上,就成为一个巨大的密室了。」
完美的计划。
真正的满月消失了,地上的人类和妖怪们还是发现了一些蛛丝马迹,便要打破辉夜的幻术。
辉夜的幻术是永恒与须臾之力同时作用的结果。须臾是很短的时间,永恒则是很长的时间。在一个须臾内,幻术阵法可以完成一个变换,T个须臾之后,则会由量变达成质变,须臾化作永恒,幻术阵法便会不攻自破。
但是地上的人们和妖怪们发现,等到幻术阵法自破需要的时间太长了,有一种快速的破阵方法,那就是直接计算出阵法在T个须臾之后的格局。
阵法可以看作是由N个小魔法阵,从阵法基石开始,围成一圈构成,按逆时针位置编号为0, 1, 2...N-1(每个小魔法阵的编号取决于它所在的位置)。整个阵法建立之初,每个小魔法阵里面只有 1 点能量。每个须臾,这些魔法阵可以进行这样的变换的其中之一:
clear a 0 表示将第a个魔法阵的能量清零
derive a b 表示将第b个魔法阵里面的能量都转移到魔法阵a里面(注意b的能量转移到a里面这样b里面就没有能量了)
swap a b 表示将第a个魔法阵与第b个魔法阵交换位置
multiply a b 表示将第a个魔法阵的能量变为原来的b倍
rotate 0 0表示每个魔法阵都转移到它逆时针方向上下一个魔法阵的位置
T个须臾里面,整个幻术法阵循环往复地执行着M条变换规则。而且由于小魔法阵储存能量的能力有限,所以小魔法阵里面一旦有超过P点的能量值的话,每P点能量都会被压缩成一团而被排斥消失。
众人与众妖怪通过仔细观察记录,发现了幻术法阵变换的规律,也就是法阵重复执行的M条变换规则,并且计算出了小魔法阵的能量阈值P,而且通过查阅上古传说,知道了永恒的时间T。现在这些资料都将交给你,请你帮忙计算出T个须臾后法阵中,每个小魔法阵的能量值。
注意看提示里面的样例解释(
第一行四个整数T, N, M, P。含义请仔细阅读题面
接下来M行,每行一条变换规则,格式为一个单词+2个参数,即一个字符串与两个参数。变换规则具体请仔细阅读题面。
一行N个整数,依次为,从阵法基石(请仔细阅读题面)开始按逆时针位置,编号为0, 1, 2..N-1的小魔法阵中的魔法值。
5 4 3 233
rotate 0 0
derive 1 3
multiply 0 2
100 12 11 1000000007
multiply 8 2
derive 11 3
swap 0 4
rotate 0 0
multiply 9 4
derive 5 10
multiply 7 2
swap 8 1
multiply 7 5
rotate 0 0
clear 7 0
0 3 2 0
12800 2 0 1 0 0 12800 0 129600 0 57600 0
/* T 0 1 2 3 4 5 init rotate derive multiply rotate derive 1 1 1 1 2 2 1 1 -> 1 1 -> 0 2 -> 0 2 -> 1 2 -> 0 3 1 1 1 2 0 0 ↑ 箭头指向0位置,逆时针方向0,1,2,3 最后T = 5时,按照顺时针方向从0开始,小魔法阵能量依次为0 3 2 0 */
数据范围:
对于前40%的数据
1 <= T <= 10^6
对于全部的数据:
1 <= T <= 10^15
2 <= N <= 50
1 <= M <= 20
P在signed int范围内
《算法艺术与信息学竞赛》第二章。 题面来自sxysxy。