• CodeForces 598B(循环数组)


    对于循环数组的问题,就是找偏移K后位置

    偏移后位置=起始位置+(相对位置+K)%(长度+1)

    #include <iostream>
    #include <string>
    #include <cstring>
    #include <cstdlib>
    #include <cstdio>
    #include <cmath>
    #include <algorithm>
    #include <stack>
    using namespace std;
    
    #define mem(a,b) memset(a,b,sizeof(a))
    #define pf printf
    #define sf scanf
    #define debug printf("!
    ")
    #define INF 10000
    #define MAX(a,b) a>b?a:b
    #define blank pf("
    ")
    #define LL long long
    
    char str[10010],tmp[10010];
    
    void change(int l,int r,int k)
    {
         int i,j;
         for(i=l-1;i<r;i++)
         {
              tmp[i] = str[i];
         }
         for(i=l-1;i<r;i++)
         {
              int y =(i-l+1+k)%(r-l+1);
              str[l-1+y] = tmp[i];
         }
    }
    
    int main()
    {
         while(~sf("%s",str))
         {
              int n,l,r,k;
              sf("%d",&n);
              while(n--)
              {
                   sf("%d%d%d",&l,&r,&k);
                   change(l,r,k);
              }
              pf("%s
    ",str);
    
         }
         return 0;
    }
  • 相关阅读:
    集合框架(三)
    集合框架(二)
    集合框架(一)
    第九章 持有你的对象
    UML类图
    用a标签设置锚点
    设计原则
    第八章 接口与内部类
    装配Bean
    第33条:用EnumMap代替序数索引
  • 原文地址:https://www.cnblogs.com/qlky/p/5159711.html
Copyright © 2020-2023  润新知