128 編輯器 雙棧

2022-07-26 19:33:11 字數 1406 閱讀 2197

你將要實現乙個功能強大的整數序列編輯器。

在開始時,序列是空的。

1、「i x」,在游標處插入數值x。

2、「d」,將游標前面的第乙個元素刪除,如果前面沒有元素,則忽略此操作。

3、「l」,將游標向左移動,跳過乙個元素,如果左邊沒有元素,則忽略此操作。

4、「r」,將游標向右移動,跳過乙個元素,如果右邊沒有元素,則忽略次操作。

5、「q k」,假設此刻游標之前的序列為a1,a2,…,ana1,a2,…,an,輸出max1≤i≤ksimax1≤i≤ksi,其中si=a1+a2+…+aisi=a1+a2+…+ai。

第一行包含乙個整數q,表示指令的總數。

接下來q行,每行乙個指令,具體指令格式如題目描述。

每乙個「q k」指令,輸出乙個整數作為結果,每個結果佔一行。

1≤q≤106

|x|≤103

1≤k≤n

8

i 2i -1

i 1q 3ld

rq 2

2

3

下圖包含了對樣例的過程描述:

用兩個棧就能模擬過程

#includeusing

namespace

std;

typedef

long

long

ll;#define readc(x) scanf("%c",&x)

#define read(x) scanf("%d",&x)

#define read2(x,y) scanf("%d%d",&x,&y)

#define read3(x,y,z) scanf("%d%d%d",&x,&y,&z)

#define print(x) printf("%d\n",x)

#define mst(a,b) memset(a,b,sizeof(a))

#define pb push_back

#define mp make_pair

const

int inf = 0x3f3f3f3f

;const

int maxn = 1e6 + 5

;int

sum[maxn],mx[maxn];

int cnt = 0

;stack

s,q;

intmain()

if(c=='d'

) }

if(c=='l'

) }

if(c=='r'

) }

if(c=='q'

) }

}

利用棧做行編輯器

問題 include include include includeusing namespace std define true 1 define false 0 define ok 1 define error 0 define infeasible 1 define overflow 2 ty...

vim編輯器 編輯器之神

h 向左移動 j 向下移動 k 向上移動 l 向右移動 w 移動到下乙個單詞的首部 e 移動到下乙個單詞的尾部 b 移動到上乙個單詞的首部 移動到行首 移動到行尾 g 跳轉到文件的末尾 gg 跳轉到文件的開始複製操作 複製n行 nyy 2yy 移動游標到要寫入的位置,再按p 刪除操作 刪除多行 nd...

編輯器之神 vim編輯器

vi編輯器是所有unix及linux系統下標準的編輯器,類似於windows系統下的notepad 記事本 編輯器,由於在unix及linux系統的任何版本,vi編輯器是完全相同的,因此可以在其他任何介紹vi的地方都能進一步了解它,vi也是linux中最基本的文字編輯器,學會它後,我們將在linux...