青島快速網(wǎng)站排名小程序商城制作一個(gè)需要多少錢
前言
第一次打 a了兩道 C、D都是TLE 看了其他人的題解之后 有一些想法 所以發(fā)一篇博客
C
題干
題目鏈接
我的思路及做題過程
我的思路是 輸入left、right 再在這個(gè)區(qū)間內(nèi)計(jì)算字母相同的對(duì)數(shù)
代碼是:
#include<iostream>
#include<cmath>
#include<algorithm>using namespace std;int main()
{int n, q, le, ri, _max = 0;string str;cin >> n >> q >> str;for (int i = 0; i < q; i++) {cin >> le >> ri;int num = 0;for (int j = le - 1; j < ri - 1; j++) {if (str[j] == str[j + 1]) {num++;}}cout << num << endl;}return 0;
}
tle了
優(yōu)化
其實(shí) 在每一個(gè)小的區(qū)間里 對(duì)數(shù)是不變的
所以我們可以先遍歷字符串找到每個(gè)小的區(qū)間內(nèi)的對(duì)數(shù)
再根據(jù)輸入的left和right輸出相應(yīng)區(qū)間內(nèi)的對(duì)數(shù)
遍歷
遍歷的過程是下面這樣
for (int i = 1; i <= n; i++)
{if (str[i] == str[i - 1]){t++;num[i] = t;}else{num[i] = t;}
}
輸出
cout << num[right - 1] - num[left - 1] << endl;
思考
寫題要有自己的思考 不要題目說什么 就寫什么
不然簡(jiǎn)單題也會(huì)吃虧
D
題干
題目鏈接
我的思路及做題過程
使用find函數(shù)和erase函數(shù)
find函數(shù)查找”ABC“ erase函數(shù)刪除”ABC“
但是TLE了
我在想是不是數(shù)據(jù)量大的時(shí)候 庫(kù)函數(shù)太慢了
就只用循環(huán)和判斷語句來寫了
#include<iostream>using namespace std;char a[200100];
string s;
int main() {cin >> s;int left = 0;int right = 0;while (left < s.size()) {right++;a[right] = s[left];//賦值給另一個(gè)數(shù)組if (right >= 3) {if (a[right] == 'C' && a[right - 1] == 'B' && a[right - 2] == 'A') {//滿足條件 就減少輸出的范圍 即rightright -= 3;}}left++;}for (int k = 1; k <= right; k++)cout << a[k];return 0;
}
總結(jié)
雖然庫(kù)函數(shù)很好用 但遇到大的數(shù)據(jù)量的時(shí)候 還是要注意一些 很容易TLE
太痛苦了
結(jié)尾
AB沒什么可說的 CD都是TLE E看了一眼 看到了圖 不打算做了
第一次打atcoder 感覺還是不太好
菜就多練 以前是以前 現(xiàn)在是現(xiàn)在
我們下篇文章見