社区讨论

TLE,这种想法在哪是比较耗时的?

P1308[NOIP 2011 普及组] 统计单词数参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lr6jahzd
此快照首次捕获于
2024/01/09 23:56
2 年前
此快照最后确认于
2024/01/10 15:18
2 年前
查看原帖
CPP
#include <iostream>
using namespace std;
#include<stdio.h>
#include<vector>
#include<algorithm>
#include<string.h>
#include<cmath>
#include<sstream>
#include<map>
#include<queue>
#define PII pair<int,int>
#define ll long long
#define N 500050
#define MOD 1e9+7
#define vv vector
#define cy              cout<<"YES"<<'\n'
#define cn              cout<<"NO"<<'\n'
string s, ss;
int arr[N]; int j = 0;
int sum,weizi;
int strcmp1(string a, string b)
{
	if (a.size() != b.size())
	{
		return 0;
	}
	for (int i = 0; i <= a.size(); i++)
	{
		char x, y;
		x = a[i]; y = b[i];
		if (a[i] >= 'A' && a[i] <= 'Z')
		{
			x += 32;
		}
		if (b[i] >= 'A' && b[i] <= 'Z')
		{
			y += 32;
		}
		if (x != y) return 0;
	}
	return 1;
}
int main()
{
	cin >> s; getchar();
	char c; int z = 0;
	while ((c = getchar()) != '\n')
	{
		if (c == ' ')
		{
			arr[++j] = z;
		}
		z++;
		ss += c;
	}
	bool flag = false;
	for (int i = 1; i <= j; i++)
	{
		string x;
		if (i == 1)
		{
			x = ss.substr(arr[i - 1], arr[i] - arr[i - 1]);
		}
		else
		{
			x = ss.substr(arr[i - 1] + 1, arr[i] - arr[i - 1] - 1);
		}
		if (strcmp1(s, x))
		{
			sum++;
			if (!flag)
			{
				if (i == 1) weizi = arr[i - 1];
				else weizi = arr[i - 1] + 1;
				flag = true;
			}
		}
	}
	string x;
	x = ss.substr(arr[j] + 1, ss.size() - arr[j]-1);
	if (strcmp1(s, x))
	{
		sum++;
		if (!flag)
		{
			weizi = arr[j]+1;
		}
	}
	if (sum == 0) cout << -1;
	else
	{
		cout << sum << ' ' << weizi;
	}
}

回复

3 条回复,欢迎继续交流。

正在加载回复...