На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Сообщение: 3
ссылка на сообщение  Отправлено: 17.03.13 10:53. Заголовок: Решения C4 на Visual C++


Здравствуйте!
Так как я сегодня узнал, что пролетел с результатами по ИТМОшной олимпиаде на заключительном этапе и не получу диплома, который дал бы мне поступление, то теперь начинается двухмесячная наработка ЕГЭ. Собственно, самый сложный номер из всего ЕГЭ для меня - это С4. Сложность заключается в том, что нельзя использовать привычные для любого программиста инструменты (например, динамические массивы), нужно всё делать налету и продумывать сложность алгоритма. Для меня это хоть и не ново (какое-то время занимался олимпиадным программированием), но всё же такие простые задачи решать "эффективно" нецелесообразно, на мой взгляд, как минимум потому, что на дворе 2013 год и затраты на просчёт и хранение информации в памяти уже не являются существенными. Но у каждого ЕГЭ свои причуды, так что делать нечего...

Так вот, эту тему на форуме я хотел бы использовать только в своих целях, то есть:
В день я сажусь и решаю 5 задач из набора задач с главной страницы, выкладываю решения тут и прошу указать мне на ошибки в плане оптимизации.
Было бы очень хорошо, если бы Константин Юрьевич самолично называл мне их, но я думаю, для меня это будет слишком жирно, да и несколько задач за раз изучать и прописывать все проблемы - это геморрой.
Я думаю, что это будет продуктивно по двум причинам: во-первых, я сам переключусь на программирование под ЕГЭ и уловлю принцип, во-вторых, потом можно будет составить целый сборник решённых задач и возможные проблемы на другом языке, да и остальным можно будет поучиться на моих ошибках :3


К тому же, объясню, почему я не хочу этого делать сам по ответам. Во-первых, язык другой и инструменты разные. Хоть я и понимаю, что излюбленный Паскаль проще проверять учителям\преподавателям, но я категорически его перестал воспринимать после изучения C\C++. Во-вторых, не всегда углядишь что не так и только опытный глаз сможет сразу увидеть неправильное.

Начал я с задачи, которая была на каком-то из Статградов, потому что уже изучал её:
В списке она значится под номером 44.

Скрытый текст



#include <stdio.h>
#include <map>
#include <string>
#include <iostream>

using namespace std;

int main() {
string abbr;
int n;
map<string, int> fios;
cin >> abbr >> n;
for(int i = 0; i < n; i++) {
string fn,sn,mn;
cin >> fn >> sn >> mn;
if(fn[0] == abbr[0] && sn[0] == abbr[1] && mn[0] == abbr[2]) {
string fio = fn + ' ' + sn + ' ' + mn;
if(fios.count(fio) == 0) fios[fio] = 1;
else fios[fio] ++;
}
}

map<string, int>::iterator it;
for(int i = 10; i >= 1; i--)
for(it = fios.begin(); it != fios.end(); it++)
if((*it).second == i) cout << (*it).first << ' ' << (*it).second << endl;

return 0;
}


Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 16 , стр: 1 2 All [только новые]





Сообщение: 4
ссылка на сообщение  Отправлено: 17.03.13 11:34. Заголовок: Задача #2 На вход пр..


Задача #2
Скрытый текст


#include <stdio.h>
#include <iostream>

using namespace std;

int main() {
int alphabet['Z'+1]; // теоретически лишняя память, можно было и каждый раз вычетать 'A' при каждом обращении, но это разве обязательно?
for(int i = 'A'; i <= 'Z'; i++)
alphabet[i] = 0;

char chr;
cin >> chr;
while(chr != '.') {
if(chr >= 'a' && chr <= 'z') chr -= 'a'-'A';
if(chr >= 'A' && chr <= 'Z') alphabet[chr] ++;
cin >> chr;
}

char max_char = 'A';
int max = alphabet['A'];
for(int i = 'A'; i <= 'Z'; i++)
if(max < alphabet[i]) {
max = alphabet[i];
max_char = i;
}

cout << max_char << " " << max;
return 0;
}

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 5
ссылка на сообщение  Отправлено: 17.03.13 11:39. Заголовок: Задача #3 (реализаци..


Задача #3 (реализация похожа на #2)

Скрытый текст


#include <stdio.h>
#include <iostream>

using namespace std;

int main() {
int alphabet['z'+1];
for(int i = 'a'; i <= 'z'; i++)
alphabet[i] = 0;

char chr;
cin >> chr;
while(chr != '.') {
if(chr >= 'a' && chr <= 'z') alphabet[chr]++;
cin >> chr;
}

for(int i = 'a'; i <= 'z'; i++)
if(alphabet[i] > 0) printf("%c%d\n", i, alphabet[i]);
return 0;
}

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 6
ссылка на сообщение  Отправлено: 17.03.13 11:51. Заголовок: Задача #4 На вход ..


Задача #4

Скрытый текст


#include <stdio.h>
#include <string>
#include <map>
#include <iostream>

using namespace std;

int main() {
map<string, int> fios;

int n;
cin >> n;

for(int i = 0; i < n; i++) {
string fn, sn;
cin >> fn >> sn;
if(fios.count(fn) == 0) {
cout << fn << endl;
fios[fn] = 1;
} else {
fios[fn]++;
cout << fn << fios[fn] << endl;
}
}
return 0;
}

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 7
ссылка на сообщение  Отправлено: 17.03.13 12:04. Заголовок: Задача #5 На городс..


Задача #5
Скрытый текст

#include <stdio.h>
#include <string>
#include <map>
#include <iostream>

using namespace std;

int main() {
map<string, int> fios;

int n;
cin >> n;

int max = 0;
for(int i = 0; i < n; i++) {
string fn, sn;
int a, b, c;
cin >> fn >> sn >> a >> b >> c;
int sum = a+b+c;
fios[fn + " " + sn] = sum;
if(sum > max) max = sum;
}

map<string, int>::iterator it;
for(it = fios.begin(); it != fios.end(); it++)
if((*it).second == max) cout << (*it).first << endl;
return 0;
}

Так, я лучше остановлюсь, а то до меня не доходит одно: если мне говорят, что память не должна зависеть от количества входных данных, но при этом говорят, что она строго лимитирована, НО при этом нужно писать эффективную по памяти программу, то как поступать: я могу завести два массива со строго определённым лимитом и оно будет занимать места больше, чем то, что использую выше - Map, который будет занимать ровно столько, сколько нужно, но при этом "в худшем случае" будет меньше или равен размеру тех двух массивов.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 8
ссылка на сообщение  Отправлено: 17.03.13 13:19. Заголовок: Задача #48 Соревнов..


Задача #48
Скрытый текст


#include <stdio.h>
#include <string>
#include <iostream>

using namespace std;

int main() {
int max1 = -1, max2 = -1, max3 = -1;
string nick1 = "";
string nick2 = "";
string nick3 = "";
int n;
cin >> n;
for(int i = 0; i < n; i++) {
string nick;
int score;
cin >> score >> nick;
if(score > max1) {
if(nick1 != nick) {
nick3 = nick2;
max3 = max2;
max2 = max1;
nick2 = nick1;
}
max1 = score;
nick1 = nick;
} else if(score > max2 && nick1 != nick) {
if(nick2 != nick) {
max3 = max2;
nick3 = nick2;
}
max2 = score;
nick2 = nick;
} else if(score > max3 && nick2 != nick && nick1 != nick) {
max3 = score;
nick3 = nick;
}
}
cout << "1 место. " << nick1 << " (" << max1 << ")" << endl;
cout << "2 место. " << nick2 << " (" << max2 << ")" << endl;
cout << "3 место. " << nick3 << " (" << max3 << ")" << endl;
return 0;
}

Жуткая задача, я не понимаю, каким образом её можно решить без компьютера на листочке и просчитать всевозможные варианты без тестирования вручную за то время, которое будет у нас на ЕГЭ...

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 9
ссылка на сообщение  Отправлено: 17.03.13 14:09. Заголовок: Задача #46 Странная..


Задача #46

Странная задача. Её я писал в своё время на Статграде, но решил только с массивами, поэтому один балл с меня сняли.
Потом уже посидел с учителем, который мне объяснил математический смысл задачи (самая большая площадь - это 1/2 * произведение максимальной длины отрезка (максимальный х минус минимальныйх), который лежит на Ox (y = 0) и максимального y по модулю. х у третьей точки не важен, так как площадь треугольника с любым х у третьей точки будут равны, ибо перпендикуляр одной и той же длины до прямой y = максимальный y по модулю)

Скрытый текст


#include <stdio.h>
#include <string>
#include <iostream>

using namespace std;

int main() {
int max_x = 0;
int min_x = 0;
int max_mod_y = 0;

bool mmax_x = false;
bool mmin_x = false;
bool mmax_mod_y = false;

int n;
cin >> n;
for(int i = 0; i < n; i++) {
int x, y;
cin >> x >> y;
if(y == 0) {
if(x > max_x || mmax_x == false) {
max_x = x;
mmax_x = true;
} else if(x < min_x || mmin_x == false) {
min_x = x;
mmin_x = true;
}
} else {
if(abs(y) > max_mod_y || mmax_mod_y == false) {
max_mod_y = abs(y);
mmax_mod_y = true;
}
}
}
float s = (max_x-min_x)*max_mod_y/2;
printf("%f", s);
return 0;
}

Вопрос лишь в том, что делает ТАКАЯ задача (она не сложная, но ставит в тупик человека, который не дружит с математикой) на ЕГЭ по информатике - вопрос.

...

И да, вопрос ещё один: возвращает данная программа 6.00000 - неотформатированный float. Будет ли придирка за это? Хотя с другой стороны, в задаче вообще не сказан формат выходных данных (в плане точности).

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 10
ссылка на сообщение  Отправлено: 17.03.13 14:36. Заголовок: Задача #45 Сначала ..


Задача #45

Сначала испугался, когда случайно увидел решение, слишком уж объёмное.
Однако C++ уменьшил его раз в 5.

Скрытый текст


#include <stdio.h>
#include <string>
#include <iostream>

using namespace std;

int main() {
int k, n;
cin >> n >> k;
int a[1001][2];

for(int i = 0; i < k; i++)
for(int j = 0; j < 2; j++)
a[i][j] = 0;

for(int i = 0; i < n; i++) {
string fn;
int h1,m1,h2,m2;
char temp;

cin >> fn >> h1 >> temp >> m1 >> h2 >> temp >> m2;
for(int j = 0; j < k; j++)
if(h1 >= a[j][0] && m1 >= a[j][1]) {
a[j][0] = h2;
a[j][1] = m2;
cout << fn << " " << (j+1) << endl;
break;
}
}
return 0;
}

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 18.03.13 13:45. Заголовок: Жирно, жирно будет....


Жирно, жирно будет.... Т. е. вам все понятно, вы все знаете и теперь Костантин Юрьевич ЛИЧНО должен быть вашим репетитором.... Слишком жирно...

Спасибо: 0 
Цитата Ответить



Сообщение: 11
ссылка на сообщение  Отправлено: 18.03.13 14:51. Заголовок: Репетитор для меня -..


Репетитор для меня - это человек, который, тратя своё время, по списку тем всё разъясняет или с нуля объясняет так, чтобы было человеку понятно.
Здесь же я не прошу тратить очень много времени, тем более я даже не прошу проверять каждую задачу тщательно на предмет багов. Я прошу лишь посмотреть оформление и хочу узнать, какие в каких задачах есть огрехи, за которые бы любой проверяющий снял балл. Да и к тому же, смысл тогда этого форума, если не помощь именно в таких делах? Всё-таки я спрашиваю конкретные вопросы на конкретных примерах и не прошу за меня что-либо делать.

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 18.03.13 15:23. Заголовок: 3ap пишет: лишь пос..


3ap пишет:

 цитата:
лишь посмотреть оформление и хочу узнать, какие в каких задачах есть огрехи


И для этого вы планируете выкладывать решения 5 задач ежедневно?


 цитата:
эту тему на форуме я хотел бы использовать ТОЛЬКО В СВОИХ ЦЕЛЯХ, то есть:
В день я сажусь и решаю 5 задач из набора задач с главной страницы, выкладываю решения тут и прошу указать мне на ошибки в плане оптимизации.



Это и называется - репетиторство (просто бесплатное)



Спасибо: 0 
Цитата Ответить



Сообщение: 12
ссылка на сообщение  Отправлено: 18.03.13 15:53. Заголовок: проол пишет: Это и ..


проол пишет:

 цитата:
Это и называется - репетиторство (просто бесплатное)



Ладно, я перегнул палку.
Я их решаю для себя, выкладываю в общий доступ, тем самым делая доброе дело, и если кто-то замечает проблемы в плане оптимизации, то пишет о них сюда же.
Но было бы неплохо, если бы пару первых задач разных типов были проверены профессионалом.

Такая формулировка уже не делает из меня наглого типа?

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 18.03.13 16:21. Заголовок: Ну, так уже лучше.....


Ну, так уже лучше... Осталось дождаться внимания тех, кому Вы "делаете доброе дело"... Удачи!

Спасибо: 0 
Цитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 18.04.13 20:30. Заголовок: А можно ли?


А можно ли использовать библиотеку map в ЕГЭ&

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 546
ссылка на сообщение  Отправлено: 18.04.13 21:05. Заголовок: MerlinKoss пишет: А ..


MerlinKoss пишет:
 цитата:
А можно ли использовать библиотеку map в ЕГЭ

В задаче С4 можно использовать любые возможности языка.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 1
ссылка на сообщение  Отправлено: 05.05.13 10:49. Заголовок: Ну, так уже лучше.....



 цитата:
Ну, так уже лучше... Осталось дождаться внимания тех, кому Вы "делаете доброе дело"... Удачи!


А вот и я, мне было необходимо посмотреть решения задач на плюсах :)
Только форум убивает пробелы и табуляцию - глаза сломаешь.

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 01.12.13 18:03. Заголовок: егэ


Что насчёт кодировок в консоле?

Спасибо: 0 
Цитата Ответить
Ответов - 16 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 186
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет