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...