1. 程式人生 > >洛谷 P3952 時間複雜度 題解

洛谷 P3952 時間複雜度 題解

作者:岸芷汀蘭

一、題目:

洛谷原題
題目圖片

二、思路:

很顯然是一道大模擬題,資料結構用
但坑點比較多,先來看一下我的慘痛經歷。
慘痛經歷
主要有以下坑點:

  • 字串的讀入;
  • 時間複雜度是取最大值
  • 判錯(包括變數的判重,我用了STL中的set

三、程式碼:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
#include<set>
#include<algorithm>

using namespace
std; inline int read(void) { int x = 0, f = 1; char ch = getchar(); while (ch<'0' || ch>'9') { if (ch == '-')f = -1; ch = getchar(); } while (ch >= '0'&&ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); } return f * x; } int T; struct
Messege { char bianliang; int index; //int begin, end; bool in; }; inline int turn(char ch[]) { int ans = 0; for (register int i = 1; i <= strlen(ch + 1); i++) { ans = ans * 10 + ch[i] - '0'; } return ans; } inline bool is_number(char ch[]) { if (ch[1] >= '0'
&&ch[1] <= '9')return true; return false; } int main() { T = read(); while (T--) { set<char>flag; flag.clear(); stack<Messege>sta; int n = read(), index = 0; bool ok = true, is_constant = true; char str_fuzadu[100]; scanf("%s", str_fuzadu + 1); for (register int i = 1; i <= n; i++) { char opt[5]; scanf("%s", opt + 1); if (opt[1] == 'F') {// F Messege top; char bl[5], st[5], en[5]; scanf("%s%s%s", bl + 1, st + 1, en + 1); if (!ok)continue; if(flag.count(bl[1])){ puts("ERR"); ok = false; continue; } top.bianliang = bl[1]; flag.insert(bl[1]); top.in = true; top.index = 0; if (sta.size())top.index = sta.top().index; if (sta.size() && !sta.top().in) { top.in = false; sta.push(top); continue; } if (is_number(st)) { if (is_number(en)) { int start = turn(st), end = turn(en); if (start > end)top.in = false; sta.push(top); } else { is_constant = false; top.index++; sta.push(top); } } else { if (is_number(en)) { top.in = false; sta.push(top); } else { sta.push(top); } } } else {// E if (!ok)continue; if (sta.empty()) { puts("ERR"); ok = false; continue; } Messege top = sta.top(); sta.pop(); index = max(index, top.index); flag.erase(top.bianliang); } } if (!ok) { continue; } if (sta.size()) { puts("ERR"); continue; } if (is_constant) { if (str_fuzadu[3] == '1')puts("Yes"); else puts("No"); } else { if (str_fuzadu[3] == '1')puts("No"); else { int fuza = 0; for (register int i = 1; i <= strlen(str_fuzadu + 1); i++) { if (str_fuzadu[i] >= '0'&&str_fuzadu[i] <= '9') fuza = fuza * 10 + str_fuzadu[i] - '0'; } if (fuza == index)puts("Yes"); else puts("No"); } } } return 0; }

相關推薦

P3952 時間複雜 題解

作者:岸芷汀蘭 一、題目: 洛谷原題 二、思路: 很顯然是一道大模擬題,資料結構用棧。 但坑點比較多,先來看一下我的慘痛經歷。 主要有以下坑點: 字串的讀入; 時間複雜度是取最大值; 判錯(包括變數的判重,我用了STL中的set)

【模擬】_3952 時間複雜

題意 給出幾個語句,判斷它們的時間複雜度是否符合,如果是的話輸出‘Yes’,不然輸出’No’,編譯錯誤的話輸出‘ERR’。 思路 比較長的模擬。 用一個check判斷時間複雜度和是否有編譯錯誤,最後比較

P3952 時間復雜

不能 時間復雜度 收獲 進行 return pos 是否 這就是 esp 做這道題的最大收獲就是堅持不懈,勇往直前,這道題是一個“碼力題”,不能說無腦,但絕對惡心。總共花了3h+才調出來。果然當時NOIp放棄這道題是明智的 好了,閑話放一邊,我們來搞一搞這道題。 這道題思路

P3952 時間復雜(模擬)

str turn har 鏈接 strlen 是個 etop round 自己 題意 題目鏈接 Sol 咕了一年的題解。。就是個模擬吧 考場上寫的遞歸也是醉了。。。 感覺一年自己進步了不少啊。。面向數據編程的能力提高了不少 #include<bits/stdc++.h

P3952 時間復雜【字符串】【模擬】

正在 size region algo cout ear its 編譯 編寫程序 題目描述 小明正在學習一種新的編程語言 A++,剛學會循環語句的他激動地寫了好多程序並 給出了他自己算出的時間復雜度,可他的編程老師實在不想一個一個檢查小明的程序, 於是你的機會來啦!下面請你

Luogu P3952 時間複雜

洛谷網校 洛谷有題  應用  11223344w               P3952 時間複雜度

NOIP-模擬試題之--時間複雜題解

2018 NOIP 全套資料下載 描述 小明正在學習一種新的程式語言 A++,剛學會迴圈語句的他激動地寫了好多程式並 給出了他自己算出的時間複雜度,可他的程式設計老師實在不想一個一個檢查小明的程式, 於是你的機會來啦!下面請你編寫程式來判斷小明對他的每個程式給出的時間複雜度是否正確。 A

【提高組NOIP2017】時間複雜 題解 分治系統處理

原題邊幅很長,這裡就不貼出來了,落谷有原題,不清楚的可以去看看 ---------------------------------------------------------------------------------------------------------

P3952時間複雜 大模擬題解

  題目連結     完全模擬 1.模擬結果 當我們的模擬程式執行結束時,直接執行模擬結果函式,用於比對我們的結果和資料給出的結果。 1 bool yes(char a[],char b[]) 2 { 3 for(int i=0;

NOIP 2017 Day1 T2 時間複雜 complexity - 模擬題 題解

作者@豪噠噠噠HaoDaDaDa 轉載自簡書@豪噠噠噠HaoDaDaDa-簡書-NOIP 2017 Day1 T2 時間複雜度 (有一個月沒有寫簡書了…) (這次終於開始拿Markdown寫了,富文字可以走開了) 說說為什麼我要寫這道題… 因為…dalao們寫的都是兩百多行的程式碼看不懂

[Luogu P3952] [LOJ 2315] [NOIP tg 2017]時間複雜

洛谷傳送門 題目描述 小明正在學習一種新的程式語言 A++,剛學會迴圈語句的他激動地寫了好多程式並 給出了他自己算出的時間複雜度,可他的程式設計老師實在不想一個一個檢查小明的程式, 於是你的機會來啦!下面請你編寫程式來判斷小明對他的每個程式給出的時間複雜度是否

P1823 音樂會的等待 題解

code != 尋找 多少 一個數 調度 記錄 data- tps 此文為博主原創題解,轉載時請通知博主,並把原文鏈接放在正文醒目位置。 題目鏈接:https://www.luogu.org/problem/show?pid=1823 題目描述 N個人正在排隊進入

P2801 教主的魔法 題解

數字 modify 表示 pre 二分查找 tchar inline 感謝 str 此文為博主原創題解,轉載時請通知博主,並把原文鏈接放在正文醒目位置。 題目鏈接:https://www.luogu.org/problem/show?pid=2801 題目描述 教

P1547 Out of Hay 題解

多條 背景 mes urn pre ++ pid 連通 show 此文為博主原創題解,轉載時請通知博主,並把原文鏈接放在正文醒目位置。 題目鏈接:https://www.luogu.org/problem/show?pid=1547 題目背景 奶牛愛幹草 題目描

P3741 honoka的鍵盤 題解

else article algo ret 一個 blog 而且 pre ble 此文為博主原創題解,轉載時請通知博主,並把原文鏈接放在正文醒目位置。 題目鏈接:https://www.luogu.org/problem/show?pid=3741 題目背景 ho

P1106 刪數問題 題解

for algorithm cnblogs style 其中 鍵盤輸入 輸入 color 一個 此文為博主原創題解,轉載時請通知博主,並把原文鏈接放在正文醒目位置。 題目鏈接:https://www.luogu.org/problem/show?pid=1106 題

P1824 進擊的奶牛 題解

style 題解 ace str 進行 pre 輸入輸出 c代碼 iostream 此文為博主原創題解,轉載時請通知博主,並把原文鏈接放在正文醒目位置。 題目鏈接 :https://www.luogu.org/problem/show?pid=1824 題目描述

P1219 八皇後 題解

輸入輸出 八皇後 皇後 printf tdi 翻譯 through pri section 此文為博主原創題解,轉載時請通知博主,並把原文鏈接放在正文醒目位置。 題目鏈接:https://www.luogu.org/problem/show?pid=1219 題目描

P1313 計算系數 題解

|| 空格 處理 一個空格 mat c代碼 for 輸入輸出 size 此文為博主原創題解,轉載時請通知博主,並把原文鏈接放在正文醒目位置。 題目鏈接:https://www.luogu.org/problem/show?pid=1313 題目描述 給定一個多項式

P1082 同余方程 題解

span 1=1 while ext html 關於 16px 2-2 正文 此文為博主原創題解,轉載時請通知博主,並把原文鏈接放在正文醒目位置。 題目鏈接:https://www.luogu.org/problem/show?pid=1082 題目描述 求關於