题解 | #F. Energy Synergy Matrix#

宙天

https://ac.nowcoder.com/acm/contest/120563/A

题意

在一个2行n列的矩阵里,小小红沿着最短路径去n列的一个格子里,小红以最短路径最小为目的,放障碍,小紫以最短路径最大为目的,放障碍。障碍不能把路堵死,直到小小红到达n列截止,小红先手,输出最短路径。

关键词

构造,最短路径,规律

题解

小红的意图是让小红一直向右走,所以堵下面或上面,而小紫的意图是让小小红蛇皮S型走,即堵右面。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

 

小红放在(2,2)的活小小红最多向右走到3就要向下走了,如果放在(2,3),最多走在4就得向下,至于小紫为啥不能放在(1,2)阻挡,因为路不能被封死,其次如果放在(2,4)的话,小紫就可以放在(1,2)了,反而不是小红的立场了,因此第一回合小红会放在(2,3),小紫会放在(1,5);

第二回合其实是一个道理,只不过小小红的起点变成(2,6),即小红与小紫的放置的行数2边1,1边2,与刚才一个道理,小红放在(1,8),小紫放在(2,10)。

然后会发现一个规律,小紫放在的列数一定是5的倍数,而小小红的路径数分为向右走和上下走的加起来,向右走一定是(n-1)与,障碍无关,而上下走的步数与小紫的障碍数有关,有几个障碍则转向几次,即有几步上下走,又因为列数是5的倍数,所以数量是n/5。

故最后的结果ans=(n-1)+n/5。

#include<bits/stdc++.h>
using namespace std;
int main(){
    int t;
    cin>>t;
    for(int i=1;i<=t;i++){
        int n;
        cin>>n;
        cout<<n-1+n/5<<endl;
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务