集訓Day2 T2 新殼棧

2021-08-09 13:31:09 字數 1267 閱讀 3581

description

小z設計了一種新的資料結構「新殼棧」。首先,它和傳統的棧一樣支援壓入、彈出操作。此外,其棧頂的前c個元素是它的殼,支援翻轉操作。其中,c>2是乙個固定的正整數,表示殼的厚度。小z還希望,每次操作,無論是壓入、彈出還是翻轉,都僅用與c無關的常數時間完成。聰明的你能幫助她程式設計實現「新殼棧」嗎?

程式期望的實現效果如以下兩表所示。其中,輸入的第一行是正整數c,之後每行輸入都是一條指令。另外,如遇彈出操作時棧為空,或翻轉操作時棧中元素不足c個,應當輸出相應的錯誤資訊。

指令 涵義

1[空格]e 在棧頂壓入元素e

2 彈出(並輸出)棧頂元素

3 翻轉棧頂的前c個元素

0 退出

input

第一行輸入c,之後每行輸入都是一條指令,輸入以0結束。

output

對於每個彈出操作,輸出棧頂元素,如果棧為空輸出「error: the stack is empty!」。對於每個翻轉操作,如果棧中元素不足c個,輸出」error: less than c elements in the stack!「,注意這裡的c在輸出時以具體輸入的c的值代替。

sample input

1 11 2

1 31 4

1 5sample output

error: less than 3 elements in the stack!

error: the stack is empty!

data constraint

c<=50000

運算元<=1000000

思路:其實就是暴力。。。。正解未知23333

**如下(暴力):

#include 

#include

#include

using namespace std;

int n,f[1000005],tot;

intread()

void update()

}int main()

if (x==3 && tot>=n) update();

x=read();

}fclose(stdin);

fclose(stdout);

}

嵊州普及Day2T2

題意 對於n個數的數列,進行排列,求第m個大於此數列的數列。思路 查詢後2個是否逆序,若是,將後3個遞迴。如此運算,找後面大於此數中最小數交換,然後將後面數列順序排列。相對簡單。見 include include include include include using namespace std...

五校聯考模擬賽Day2T2矩陣 容斥原理

n m 的網格,對其進行黑白染色,問每一行每一列至少有乙個黑格仔的方案數。考場上只會 n 3 的dp,還和指數級列舉乙個分qwq 設 f i j 表示到了第 i 行,已經有 j 列被染黑,然後暴力轉移上一行有幾個黑格仔 正解是容斥 首先固定好列,也就是保證每一列都有乙個黑格仔 這樣的方案是 2 n ...

FJ省隊集訓DAY3 T2

思路 如果乙個dag要的路徑上只要一條邊去切掉,那麼要怎麼求?很容易就想到最小割,但是如果直接做最小割會走出重複的部分,那我們就這樣 反向邊設為inf,這樣最小割的時候就不會割到了,判斷無解我們直接用tarjan 1 include2 include3 include4 include5 inclu...