jzoj 5561 簡單模擬

2022-07-15 01:30:11 字數 1204 閱讀 6262

description

很久很久以前,有乙個1~n 的排列a,還有乙個長度為q 的,每個元素在1

到n 之間的序列b[0]…b[q-1]。

作為一道簡單模擬題,你需要模擬m 次操作,第i(1 到m)次操作你會在

a 中找到值為b[(i-1)%q]的元素,並把它與第乙個元素交換。

你只需要輸出m 次操作之後的序列即可

input

第一行三個整數n、q、m。

第二行n 個整數表示排列a。

第二行q 個整數表示序列b。

output

一行n 個整數,表示m 次操作後的排列。

data constraint

subtask 1,10pts,1<=n,q,m<=100。

subtask 2,10pts,1<=n,q,m<=5000。

subtask 3,20pts,1<=n=q<=5000,1<=m<=10^18,b[i]=i+1。

subtask 4,20pts,1<=n=q<=200000,1<=m<=10^18,b[i]=i+1。

subtask 5,40pts,1<=n,q<=200000,1<=m<=10^18。

sol :發現這是乙個置換,那麼,我們把n次操作看成乙個置換,對其快速冪,再暴力。

#includeusing

namespace

std;

#define n 200007

struct

node

void

res()

}c,anw;

#define sight(x) ('0'<=x&&x<='9')template

inline

void read(t &x)

void write(int x) write(x/10); putchar('

0'+x%10

);}inline

void writeln(int x)

inline

void writel(int x)

node

operator * (const node x,const

node y)

long

long

m,y;

intn,q,a[n],b[n],st,pos[n],top,ang[n],ans[n];

signed main ()

JZOJ 交換 模擬

給出字串s和字串t,現在你要把s的某乙個字元和t的某乙個字元交換,使得交換之後的s至少要有三個連續相同的字元,交換之後的t也要有三個連續相同的字元。問有多少種不同的交換方式。第一行,乙個字串s。s只含有 r g b 三種字元,長度不超過50,不小於3。而且s任意兩個相鄰的字元都不相同。第二行,乙個字...

模擬 遊戲(jzoj 1614)

有乙個n n的棋盤,有乙個座標在x,y的棋子,1 2號玩家可以將他向左,向下,向左下 45 45 45 移動若干格,假如他們都是akioi聰明絕頂的巨佬,請問1號玩家先出,誰可以將棋子移到1,1,他的x是從上往下的6 2 4230 n 500 50 n 2000 80 n 10000 100 n 1...

JZOJ 奶牛的歌聲 模擬

farmer john的n頭奶牛喜歡站成一排一起唱歌。每頭奶牛都有自己獨特的身高h,唱歌時的音量為v。每頭奶牛的歌聲都會從牠所在的位置出發,向佇列的兩邊傳播。並且有乙個奇特的事情 當某頭奶牛唱歌時,整個隊伍中,在左右兩個方向上,只有身高比牠高且與牠最接近的奶牛能聽見牠的歌聲 也就是說,任何一頭奶牛的...