• Codeforces1476D Journey


    题目大意:n+1个点之间有n条单向路径,给定路径方向LR,L(i-1-->i),R(i-->i-1)。从n+1个点开始,每次移动所有路径方向改变,问从n+1个点开始可到达的点的个数。

    题目链接

    解题思路:手动模拟一下,会发现,当前点可向右经过的路径是RLRLRLRL...,向左可经过的路径是LRLRLRLR...。

    那么,该点可向左移动点的个数+可向右移动点的个数+1是答案

    例如      6  LRRRLL  可建立如下表

    0 1 2 3 4 5 6
    向右 0 1 1 2 0 0 0
    向左 0 1 0 0 0 2 1
    答案 1 3 2 3 1 3 2

    那么问题在于如何得到可经过路径的长度,以向右为例

    若i+1为0,也就是i+1为L。i为R,则ansr[i]=ansr[i+2]+2;i为L,则ansr[i]=0.

    若i+1为1,也就是i+1为R。i为R,则ansr[i]=1;i为L,则ansr[i]=0

    需要注意边缘问题

    同理可得向左的路径长度。

     1 #include<stdio.h>
     2 #include<algorithm>
     3 #include<string.h>
     4 #include<math.h>
     5 using namespace std;
     6  
     7 typedef long long ll;
     8 const int maxn=3e5+5;
     9 int t,n,m;
    10 char a[maxn];
    11 int dp[2][maxn];
    12  
    13 int main()
    14 {
    15     scanf("%d",&t);
    16     while(t--)
    17     {
    18         scanf("%d",&n);
    19         scanf("%s",a+1);
    20         memset(dp,0,sizeof(dp));
    21         for(int i=n;i>=1;i--){
    22             if(a[i]=='R'){
    23                 if(dp[0][i+1]==0&&i+2<=n+1){
    24                     dp[0][i]=dp[0][i+2]+2;
    25                 }
    26                 else {
    27                     dp[0][i]=1;
    28                 }
    29             }else {
    30                 dp[0][i]=0;
    31             }
    32         }
    33         for(int i=1;i<=n;i++){
    34             if(a[i]=='L'){
    35                 if(dp[1][i-1]==0&&i-2>=0){
    36                     dp[1][i]=dp[1][i-2]+2;
    37                 }
    38                 else {
    39                     dp[1][i]=1;
    40                 }
    41             }else {
    42                 dp[1][i]=0;
    43             }
    44         }
    45         for(int i=0;i<=n;i++){
    46             printf("%d ",dp[0][i+1]+dp[1][i]+1);
    47         }
    48         printf("
    ");
    49     }
    50     return 0;
    51 }
    52 /*
    53 2
    54 3
    55 LRL
    56 3
    57 RLR
    58 */
    View Code
  • 相关阅读:
    node 命令
    nodejs项目搭建
    linux 安装与配置
    GestureDetector
    activity切换效果
    hadoop
    phonegap 自定义插件
    自定义控件-属性自定义
    zxing demo
    select 语句的执行顺序
  • 原文地址:https://www.cnblogs.com/noback-go/p/14348220.html
Copyright © 2020-2023  润新知