Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2015, 18:27   #21
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

А можно в 3-х словах идею?
Poma][a вне форума Ответить с цитированием
Старый 21.02.2015, 19:05   #22
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В трех словах слабо. Читаю символы и заполняю частотный массив. Как только больше k раз встретился один из символов левый символ убираю их прочитанного. До тех пор пока не уберется символ, который встретился больше k раз. Все сопровождается наращиванием счетчика подстрок. В хреновом случае, например n=k=1000000 и вся строка из одного символа, все 1000000 символов одновременно будут считаны в память
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.02.2015, 21:32   #23
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Пан Аватар, а не подскажете, что там за хитрющий 17 тест?
Poma][a вне форума Ответить с цитированием
Старый 21.02.2015, 21:33   #24
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А их можно подсмотреть? Понятия не имею как
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.02.2015, 21:34   #25
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Нельзя.. Просто Вы с ним встретились.. И его обошли.. Посему, осмелился предположить, что Вы нашли некий контр. пример.
Poma][a вне форума Ответить с цитированием
Старый 21.02.2015, 21:37   #26
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А, что-то было. И вроде здесь:

if j>k then Inc(m,((j-k+1)*(j-k)) div 2);

для этого и сделал не только n int64, но и k. Похоже (j-k+1)*(j-k) выскакивало за пределы longint. В принципе n можно было и не делать таким типом, но сделал его в начале из-за

m:=((2*n-k+1)*k) div 2;

и благополучно забыл про это. k было бы достаточно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 21.02.2015 в 21:43.
Аватар вне форума Ответить с цитированием
Старый 21.02.2015, 21:42   #27
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Спасибо!
Похимичил с типами, чтобы зашло..
Вот мой вариант :
Код:
#include <fstream>
#include <vector>
#include <queue>
#include <map>

using namespace std;

map<char, queue<int> > p;

int main()
{
	ifstream cin("input.txt");
	ofstream cout("output.txt");

	long long n, k;
	char ch;
	cin >> n >> k >> ch;

	vector<long long> a(n);
	a[0] = 1;
	p[ch].push(0);

	long long j = 0;
	for (long long i = 1; i < n; i++)
	{
		cin >> ch;
		p[ch].push(i);
		if (p[ch].size() > k)
		{
			if (j < p[ch].front() + 1)
				j = p[ch].front()+1;
			p[ch].pop();
		}
		a[i] = i-j + 1 + a[i-1];
	}
	cout << a[n-1];
	return 0;
}
Poma][a вне форума Ответить с цитированием
Старый 21.02.2015, 21:47   #28
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Памяти сколько использовал?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.02.2015, 21:56   #29
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

14 мб
Я очень много 10^6*2 на хранение всей необходимой (наверное) инфы, для быстрого нахождения j

UPDATE
Уже 6.2
Код:
#include <fstream>
#include <vector>
#include <queue>
#include <map>

using namespace std;

map<char, queue<int> > p;

int main()
{
	ifstream cin("input.txt");
	ofstream cout("output.txt");

	long long n, k;
	char ch;
	cin >> n >> k >> ch;

	long long v = 1;
	p[ch].push(0);

	long long j = 0;
	for (long long i = 1; i < n; i++)
	{
		cin >> ch;
		p[ch].push(i);
		if (p[ch].size() > k)
		{
			if (j < p[ch].front() + 1)
				j = p[ch].front()+1;
			p[ch].pop();
		}
		v += i - j + 1;
	}
	cout << v;
	return 0;
}

Последний раз редактировалось Poma][a; 21.02.2015 в 21:58.
Poma][a вне форума Ответить с цитированием
Старый 21.02.2015, 21:59   #30
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ясненько, не ахти. Придумай 60Кб. Там школяры (или не?) придумали
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Защищенный документ Vl_Oly Microsoft Office Word 2 18.07.2013 13:23
Защищенный режим процессора Игорь Гурчин Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 27.02.2011 22:02
Access запрашивает пароль на все файлы даже если пароль не устанавливался d_adilet Microsoft Office Access 1 11.06.2010 19:44
Защищенный режим DOS - С++ saw76 Общие вопросы C/C++ 0 16.12.2009 11:31
Защищенный режим Advisor Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 08.12.2008 17:37