都是TLE,求助~~~(请用小学五年级能听懂的回答)
查看原帖
都是TLE,求助~~~(请用小学五年级能听懂的回答)
1708199
colosky楼主2025/7/23 19:58
(O2)
#include <bits/stdc++.h>
using namespace std;
map<string, long long>f1;
map<string, pair<bool, bool> >f2;
long long string_to_int(string num) {
	if (f1[num] != 0) {
		return f1[num];
	}
	if (num == "") {
		return 0;
	}
	if (num.length() == 1) {
		f1[num] = num[0] - '0';
		return f1[num];
	}
	f1[num] = string_to_int(num.substr(1, num.length() - 1)) + (num[0] - '0') * 10;
	return f1[num];
}
int main() {
	string s;
	long long cnt = 0, p;
	cin >> p;
	cin >> s;
	for (int i = 0; i < s.length(); i++) {
		for (int j = 0; j < s.length() - i; j++) {
			if(f2[s.substr(i, j)].first&&f2[s.substr(i,j)].second){
				cnt++;
				continue;
			}
			if (i + j < s.length() && string_to_int(s.substr(i, j)) % p == 0) {
				f2[s.substr(i, j)] = {true, true};
				cnt++;
			} else {
				f2[s.substr(i, j)] = {true, false};
			}
		}
	}
	cout << cnt;
	return 0;
}

求助~~~ 最开始:暴力枚举 后来:暴力枚举+记忆化 求助~~~ (发布者:一名小学五年级学生)

2025/7/23 19:58
加载中...