1 条题解

  • 0
    @ 2025-9-14 20:56:04

    用前缀和维护五个答案即可。

    #include <bits/stdc++.h>
    using namespace std;
    int a[1000012][5];
    int main()
    {
    	string s;
    	cin >> s;
    	int n = s.size();
    	s = ' ' + s;
    	for (int i = 1; i <= n; i++)
    	{
    		if (s[i] == 'l') a[i][0] = 1;
    		if (s[i] == 'u') a[i][1] = 1;
    		if (s[i] == 'o') a[i][2] = 1;
    		if (s[i] == 'g') a[i][3] = 1;
    		if (s[i] == 'u' && s[i - 1] == 'u') a[i][4] = 1;
    	}
    	for (int i = 1; i <= n; i++)
    		for (int j = 0; j <= 4; j++)
    			a[i][j] += a[i - 1][j];
    	int q;
    	cin >> q;
    	while (q--)
    	{
    		int l, r;
    		cin >> l >> r;
    		cout << a[r][0] - a[l - 1][0] << ' ';
    		cout << a[r][1] - a[l - 1][1] << ' ';
    		cout << a[r][2] - a[l - 1][2] << ' ';
    		cout << a[r][3] - a[l - 1][3] << ' ';
    		cout << a[r][4] - a[l][4] << endl;
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    128
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    13
    已通过
    3
    上传者