|
04.12.2010, 21:37
|
#1
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Задачка
Помогите пожалуста!
Я уже в полном отчаинее
Вобщем есть одна задача.
В программе пользователь вводит число n, а программа выводит число k;
Ну я написал это:
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
cout << (4*n)/3;
return 0;
}
НО одна проверяющая система сказала
Неверный ответ на тесте 13
|
Я ВПАНИКЕ!!!11
ЧТО НЕ ТАК
Взарание спасибо
|
(Offline)
|
|
04.12.2010, 22:59
|
#2
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Задачка
эээ, импер, зачем свой пост удалил, он же мне помог
ещё вопросик. последний
Вот задача
Дана куча строк. Далее заданы запросы, представляющие собой некоторые строки. Для каждого префикса каждого запроса необходимо вывести количество строк в куче, которые имеют такое же начало, как и префикс запроса.
Входные данные: В первой строке содержится два целых числа N и М – количество строк в куче и количество запросов. (1 <= N, M <= 105). Далее записаны N строк кучи. Далее содержится строк M запросов. Все строки состоят из маленьких латинских букв. Длина любой строки ввода не превышает 21 символ.
Выходные данные: Для каждого запроса выведите в отдельной строке L чисел через пробел, где L – длина строки запроса. Каждое i-ое число должно содержать ответ задачи для префикса длины i строки запроса.
Пример входных данных
3 4
abacaba
dabaduba
abad
abac
aba
dab
adcb
Пример выходных данных
2 2 2 1
2 2 2
1 1 1
2 0 0 0
|
вот мой код:
#include <iostream> #include <string> using namespace std; string str_masN[100001], str_masM[100001]; int main() { int n, m; cin >> n >> m; for(int i = 0; i < n; i++) cin >> str_masN[i]; for(int i = 0; i < m; i++) cin >> str_masM[i]; for(int i = 0; i < m; i++) { int size = str_masM[i].size(); const char * buf = str_masM[i].c_str(); for(int j = 1; j <= size; j++) { int nn = 0; for(int k = 0; k < n; k++) { if(str_masN[k].find(buf, 0, j) == 0) nn++; } if(nn == 0) { for(int l = 0; l < size - j + 1; l++) cout << 0 << ' '; break; } cout << nn << ' '; } cout << endl; } return 0; }
он абсолютно рабочий, но сцуко на 165 мс больше положенного времени выполняется
Как ещё его можно оптимизировать?
|
(Offline)
|
|
05.12.2010, 00:27
|
#3
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений (для 1,962 пользователей)
|
Ответ: Задачка
Ну, во-первых, зачем такой большой размер массивов:
string str_masN[100001], str_masM[100001];
Ведь в условии сказано максимальный размер, так сделай так:
string str_masN[105], str_masM[105];
Это тоже влияет на быстродействие
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
05.12.2010, 01:35
|
#4
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Задачка
Может, для быстродействия не стоит юзать класс string ? В задании было что-то по этому поводу? (в код не вникал особо)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
05.12.2010, 10:39
|
#5
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Задачка
baton4ik, то не 105, то 10^5
|
(Offline)
|
|
05.12.2010, 18:07
|
#6
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Задачка
Вот есть динамический массив:
string *mas = new string[n];
как сделать чтоб элементами массива были не string, а char[24] ?
|
(Offline)
|
|
05.12.2010, 18:13
|
#7
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Задачка
А можно чуть чуть поподробней
UPD - эээ, импер, это чо новая фишка штоли, удалять свои посты?
|
(Offline)
|
|
05.12.2010, 18:56
|
#8
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Задачка
да не - старая
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
|
den (05.12.2010), pax (05.12.2010)
|
08.12.2010, 20:14
|
#9
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Задачка
Есть два char массива: "qwerty" и "qweaty".
Как видно, последний совпавший символ у этих строк - e - 2 символ(если от 0 щитать).
Как наиболее быстро (важно каждая мс) увеличить каждый элемент c 0 до 2 (в данном случае) другого int массива на 1?
Только не говорите типо сам делай, это просто. Я знаю. Но я повторюсь вожна каждая милдисекунда
|
(Offline)
|
|
08.12.2010, 20:31
|
#10
|
Бывалый
Регистрация: 03.12.2008
Адрес: наша раша
Сообщений: 762
Написано 129 полезных сообщений (для 245 пользователей)
|
Ответ: Задачка
char a[];
char b[];
int i[];
int c=0;// индекс массива
while(a[c]==b[c]) i[c++]++;
__________________
Reality Simulation Games
Core 2 Duo 2,8GHz, RAM 1Gb, ATI R5670 1Gb. WinXP 32
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:26.
|