第2行到第t+1行為輸入字串,每行乙個字串。
保證輸入全為英文小寫字母。
ababababc
abacda
aa解析:由於這個特殊的要求,如果用陣列來回掃的話,肯定是超時了。所以我們可以用到棧,這樣每個元素只進棧一次,時間就能達到o(n)的。具體實現方法如下:
先把第乙個字元入棧,再把剩下的n-1個字元入棧, 每次入棧的時候都判斷當前字元和棧頂元素是否滿足跑走的條件:即兩個字元中的較小的那個在字元表中的位置是奇數,且
兩個字元在字母表中位置相鄰。如果滿足的話,就將棧頂元素出棧;否則,就將該字元入棧。然後重複上述操作,直到將剩下的n-1個字元全部掃一遍為止,最後在棧裡面剩的就是剩下的字串,不過直接彈出的話是倒序的,要調整一下順序。
ac**:
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
#define inf 0x7fffffff
#define ll long long
#define lll(a, b) a<>b
#define mid(a, b) a+(b-a)/2
const int maxn = 1000 + 10;
int main(){
#ifdef sxk
freopen("in.txt", "r", stdin);
#endif // sxk
int n;
string s;
scanf("%d", &n);
while(n--){
char p[100005];
int foo = 0;
cin >> s;
int len = s.size();
for(int i=0; i
BNUOJ 4304 硬幣迷陣
這個迷陣由12個古埃及硬幣構成,形狀如下圖 當我們把所有的硬幣全都翻成正面或全都翻成反面時,我們就可以成功解開這個迷陣。但是這個迷陣有乙個小機關 當我們翻動某乙個硬幣的時候,與它同行或同列的硬幣也將同時被翻動。例如當我們翻動上圖箭頭所指的硬幣之後,迷陣的情況會變成下圖所示 現在prayer希望知道他...
bnuoj 1068 比賽安排
time limit 1000ms case time limit 1000ms memory limit 65536kb 1 每個人每天最多只能參加一場比賽,可以不參加。2 在大賽結束後,任意兩人間都恰好進行了一場對決。由於時間有限,我們希望比賽天數盡可能少,請聰明的你幫忙給出對陣方案。輸入第一行...
BNUOJ 4358 左手定則
描述 玩過rpg 尤其是國產rpg 的童鞋都應該對迷宮這種神棍的設定深惡痛絕,尤其是當你轉了半小時之後發現回到了原地,這種感覺真是無比的痛苦。萬一遊戲還中途崩潰了那真是連掀桌子 砸鍵盤 摔滑鼠的心都有了 經過無數次的trial and error之後,玩家終於下定決心認定迷宮存在的意義就是延長遊戲時...