思路:首先 他是对1到k 元素做一次变换,然后对2到k+1个元素做一次变化。。。。依次做完。

如果我们对1到k个元素做完一次变换后,把整个数组循环左移一个。那么第二次还是对1 到 k个元素做和第一次一样的变换,再左移,再对1 到 k个元素做和第一次一样的变换,依次做完n-k+1即可。

假设题目要求的变换为C    循环左移变换为P。那么对于每次查询 相当于做  n-k+1  (CP) 变换。最后把答案再向右移动n-k+1  回到原来位置即可。

那么问题就解决了   效率    每次查询n log(n-k+1)

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<string>
#include <iostream>
#include<vector>
#define MAXN 1000050
#define lson i<<1
#define rson i<<1|1
#define LL long long
using namespace std;
char s[MAXN];
char a[MAXN];
int p[MAXN];
int ans[MAXN];
int tmp[MAXN];
int main() {
int n, m;
scanf(" %s", s);
n = strlen(s);
scanf("%d", &m);
for (int i = 0; i < m; ++i) {
int k, d;
scanf("%d%d", &k, &d);
for (int i = 0; i < n; ++i)
p[i] = ans[i] = i;
int cid = 0;
for (int x = 0; x < d; ++x)
for (int j = x; j < k; j += d)
{
p[cid++] = j;
}
int last = p[0];
for (int j = 0; j <n-1;++j)
p[j] = p[j + 1];
p[n-1] = last;
int x = n - k + 1;
while (x) {
if (x & 1) {
for (int j = 0; j < n; ++j)
tmp[j] = ans[p[j]];
for(int j=0;j<n;++j)
ans[j]=tmp[j];
}
for (int j = 0; j < n; ++j)
tmp[j] = p[p[j]];
for (int j = 0; j < n; ++j)
p[j] = tmp[j];
x >>= 1;
}
for (int j = 0; j < n; ++j)
{
a[j] = s[ans[(j + k - 1) % n]];
}
for (int j = 0; j < n; ++j)
s[j] = a[j];
printf("%s\n", s);
}
}

  

最新文章

  1. java重置定时器频率
  2. 网络第一节——NSURLConnection
  3. PDF虚拟打印机
  4. 软件产品案例分析----K米app
  5. 简明外贸报价单(Price List)范本
  6. java IO基础操作
  7. Hive修改表
  8. React 开发注意事项,注意点
  9. 161027、Java 中的 12 大要素及其他因素
  10. VS 无法启动程序
  11. Java实战之04JavaWeb-07Listener和Filter
  12. 2016多校联合训练contest4 1012Bubble Sort
  13. 何謂COB (Chip On Board) ?介紹COB的演進歷史
  14. 基于USB网卡适配器劫持DHCP Server嗅探Windows NTLM Hash密码
  15. Python-HTTP 概况
  16. helm-chart3,函数和管道
  17. 安装BouncyCastle
  18. Could not resolve com.android.support:appcompat-v7:28.0.0 错误处理
  19. SearchView的最简单的使用方式
  20. 2017年第八届蓝桥杯C/C++B组省赛题目解析

热门文章

  1. 日常积累oracle 有关信息
  2. sql 游标
  3. 27.solr集群
  4. LaTeX用dvi编译,Yap浏览器弹出对话框,决解办法(傻瓜教程)
  5. springboot中swaggerUI的使用
  6. smarty模板中如何嵌入javascript脚本
  7. About 滚存
  8. PHP function
  9. DBUnit的一些注意事项
  10. MySQL AHI 实现解析