problemscpp
A collection of my answers to algorithm problems in c++.
静态 Public 成员函数 | 所有成员列表
acwing::acwing3412类 参考

AcWing 4312. 出现次数 更多...

#include <acwing.h>

静态 Public 成员函数

static int main (istream &cin, ostream &cout)
 

详细描述

AcWing 4312. 出现次数

在文件 acwing.h1751 行定义.

成员函数说明

◆ main()

int acwing::acwing3412::main ( istream &  cin,
ostream &  cout 
)
static

在文件 acwing.cpp5309 行定义.

5309 {
5310 int n;
5311 int m;
5312 int q;
5313 cin >> n >> m >> q;
5314 if(m > n) {
5315 for(int i = 0; i < q; i++) {
5316 cout << 0 << endl;
5317 }
5318 return 0;
5319 }
5320 string s;
5321 string t;
5322 cin >> s >> t;
5323 set<int> sub_end;
5324 set<int> sub_start;
5325 int sub_count = 0;
5326 for(int i = 0; i + m <= n; i++) {
5327 string str = s.substr(i, m);
5328 if(str == t) {
5329 sub_count++;
5330 sub_start.insert(i);
5331 sub_end.insert(i + m - 1);
5332 }
5333 }
5334 vector sub_end_count(n + 1, 0);
5335 vector sub_start_count(n + 1, 0);
5336 int current = 0;
5337 for(int i = 0; i < n + 1; i++) {
5338 if(sub_end.contains(i)) {
5339 current++;
5340 }
5341 sub_end_count[i] = current;
5342 }
5343 current = 0;
5344 for(int i = n; i >= 0; i--) {
5345 if(sub_start.contains(i)) {
5346 current++;
5347 }
5348 sub_start_count[i] = current;
5349 }
5350 for(int i = 0; i < q; i++) {
5351 int l;
5352 int r;
5353 cin >> l >> r;
5354 int ans = sub_end_count[r - 1] - (sub_count - sub_start_count[l - 1]);
5355 cout << max(ans, 0) << endl;
5356 }
5357 return 0;
5358 }

被这些函数引用 acwing::TEST().


该类的文档由以下文件生成: