На форумі обговорюються лише питання, пов'язані з олімпіадою
Ви не зайшли.
Все працює. Очистіть кеш браузера.
Поза форумом
Хм...аналогічно
Відправив А, а в статистиці вона відсутня, хоча пише що прийняло
Поза форумом
Жюри_Непомнящий написав:
Все працює. Очистіть кеш браузера.
К сожалению не работает статистика. Пробовал очистить кеш, ничего не меняется. Как быть, отправлять решения повторно?
Поза форумом
Отправьте задачи повторно. Если задача была принята ранее, получите сообщение, что повторное решение не принимается.
Поза форумом
Что-то не отправляются задачи на проверку. Даже такая вот "реализация" для Division:
var inp,out:text; i,A,B,k:integer; prime:array[1..100] of integer; begin assign(inp,'input.txt'); reset(inp); Read(inp,A,B,k); for i:=1 to k do Read(inp,prime[i]); close(inp); assign(out,'output.txt'); rewrite(out); WriteLn(out,7); {Пробовал и Write(out,7); } close(out); end.
Выдает "FAILED (Bad Data)"
Это почему еще???
Может не работает только онлайн проверка, а сдавать можно???
-------------
to programist: Спасибо!!!
Відредаговано shoa169 (2011-01-24 21:28:29)
Поза форумом
shoa169 написав:
Что-то не отправляются задачи на проверку. Даже такая вот "реализация" для Division:
Выдает "FAILED (Bad Data)"
Это почему еще???
Может не работает только онлайн проверка, а сдавать можно???
Не треба, щоб програма читала вхідні дані з файла.
Відредаговано programist (2011-01-24 21:20:40)
Поза форумом
Статистика 3-го туру на 14 годину 25 січня.
Задача Division - 93 варіанти розвязків;
Задача Prize - 105 варіантів розвязків;
Задача Column - 109 варіантів розвязків;
Задача Towns - 67 варіантів розвязків;
Задача Іnstigator - 45 варіантів розвязків.
Поза форумом
Якщо вже закінчився III тур, то зможе хтось показати розв'язки задач у Паскалі?
Поза форумом
programist написав:
Якщо вже закінчився III тур, то зможе хтось показати розв'язки задач у Паскалі?
Поки немає результатів ніхто ж не знає напевно, наскільки його рішення правильне і ефективне. Почекайте результатів
Поза форумом
Ну... я можу, правда хто його знає, скільки вони балів наберуть?
Взагалі-то ідеї у мене були такі:
Division
Знаходжу різницю чисел Lo i Hi
для всіх простих чисел віднімаю від результату кількість чисел, які діляться на дане просте число і знаходяться в межах від Lo до Hi.
для всіх пар простих чисел (нехай це буде A, B) додаю до результату кількість чисел, які діляться на A і на B одночасно (тобто на A*B).
для всіх трійок простих чисел (нехай це буде A, B, C) віднімаю від результату кількість чисел, які діляться на A і на B, і на C одночасно (тобто на A*B*C).
Ну... і т.д.
Причому якщо чисел між Lo і Hi, які діляться на деяких (a1,a2,a3.......an) простих чисел, уже немає, то сенсу перевярти для (a1,a2,a3.......,an, an+1) теж немає.
Ну... якщо це все правильно реалізувати, то думаю, балів 40 з 60 буде:) побачимо
Prize
Тут тупо динаміка...
головне - правильно загнати в квадратну матрицю і все...
тут говорити, думаю, немає про що:)
Column
У мене такий розв'язок, що його описувати на форумі краще не треба
Я в реалі ще якось можу його пояснити, але тут... пальці відваляться поки напишу
Instigator
я думаю, що треба робити так:
для всіх пар вершин перевірити чи їх можна сполучити відрізком так, щоб цей відрізок повністю належав многокутнику
а потім пошуком в ширину від першої вершини знаходимо мін. час горіння до кожної з вершин, виводимо час горіння тої вершини, до якої вогонь буде діставатись найдовше.
Towns
*DONT_KNOW*
Поза форумом
MItornaDOS написав:
Взагалі-то ідеї у мене були такі:
Я взагалі-то хотів побачити код програм.
Відредаговано programist (2011-01-25 15:56:11)
Поза форумом
>
Towns
*DONT_KNOW*
>угу..
А коли буде проходити четвертий тур і хто до нього проходить?
Поза форумом
>
Column
У мене такий розв'язок, що його описувати на форумі краще не треба
Я в реалі ще якось можу його пояснити, але тут... пальці відваляться поки напишу
> Чому? Це одна з найлегших задач
Поза форумом
program column; {$mode delphi} uses SysUtils; var n : integer; i, j, k, x : int64; arr : array[0..10000] of integer; key : boolean; begin read(n); i:=1; k:=0; x:=0; key:=true; while (i<=n) do begin read(arr[i]); if arr[i]=0 then begin if key=true then x:=x+1; k:=k+1; end else key:=false; inc(i); end; if key=true then writeln(0) else begin i:=n; key:=true; while (key=true) and (i>=1) do if arr[i]=0 then begin j:=i; key:=false; end else if i=1 then j:=1 else i:=i-1; if (k-x)<(j-k) then writeln(k-x) else writeln(j-k) end; end.
Поза форумом
Не дуже зрозумів ідею попереднього розв'язку, ось мій
#include<iostream> using namespace std; int main() { bool current; int n,res,i,S1; cin>>n; for(i=0,res=0,S1=0;i<n;i++) { cin>>current; if(current)S1++; else if(S1>0) { res++; S1--; } } cout<<res; return 0; }
Якщо зустрілась одиниця, збільшую "рахувалку", якщо нуль - зменшую "рахувалку" і збільшую результат
Відредаговано Dim_ov (2011-01-25 18:34:07)
Поза форумом
Мої розв'язки виставлю пізніше
Dim_ov написав:
Не дуже зрозумів ідею попереднього розв'язку, ось мій
Код:
#include<cstdio> using namespace std; int main() { bool current; int n,res,i,S1; cin>>n; for(i=0,res=0,S1=0;i<n;i++) { cin>>current; if(current)S1++; else if(S1>0) { res++; S1--; } } cout<<res; return 0; }Якщо зустрілась одиниця, збільшую "рахувалку", якщо нуль - зменшую "рахувалку" і збільшую результат
Це з II етапу Вінницької олімпіади стирино, нецікаво читати авторський розв'язок тим більше з таким коротким поясненням
Відповідати на моє повідомлення не потрібно.
А коли буде проходити четвертий тур і хто до нього проходить?
13.02.2011, там же написано.
Хто - до результатів 3-го туру рано ще говорити. Хоча... по підсумкам перших двох турів вже можна про декого догадуватись
> Чому? Це одна з найлегших задач
Ну... у мене розв'язок не такий простий, як авторський (див. вище)
Напевно він недостатньо спрощений, тому і громіздкий.
Відредаговано MItornaDOS (2011-01-25 17:11:32)
Поза форумом
programist написав:
Код:
program column; {$mode delphi} uses SysUtils; var n : integer; i, j, k, x : int64; arr : array[0..10000] of integer; key : boolean; begin read(n); i:=1; k:=0; x:=0; key:=true; while (i<=n) do begin read(arr[i]); if arr[i]=0 then begin if key=true then x:=x+1; k:=k+1; end else key:=false; inc(i); end; if key=true then writeln(0) else begin i:=n; key:=true; while (key=true) and (i>=1) do if arr[i]=0 then begin j:=i; key:=false; end else if i=1 then j:=1 else i:=i-1; if (k-x)<(j-k) then writeln(k-x) else writeln(j-k) end; end.
Ця програма на тесті 0 0 1 0 0 1 1 1 1 1 0 0 видає відповідь - 4, але правильна - 3.(одиничка стає між одиничками а два нулики в лівий край)
Поза форумом
В мене інший алгоритм до задачі Column. Проходячи масив рахую нулики як від'ємні числа, а одинички як додатні. Наприклад 000111001 буде таким -3 3 -2 1. Потім для кожного відємного числа рахую кількість додатніх зліва і відємних справа, для додатніх навпаки. Результатом буде найменша сума. Час лінійний. Код покажу потім.
Поза форумом
Наприклад 000111001 буде таким -3 3 -2 1. Потім для кожного відємного числа рахую кількість додатніх зліва і відємних справа, для додатніх навпаки
О, щось схоже на мою ідею, однак у мене реалізація інша.
Думаю, що тупіша - багато часу на неї не тратив, всерівно у мене також лінійний час.
Поза форумом
MItornaDOS написав:
Це з II етапу Вінницької олімпіади стирино, нецікаво читати авторський розв'язок тим більше з таким коротким поясненням
Відповідати на моє повідомлення не потрібно.
Усе ж відповім
Я, на жаль, знаходжусь на Полтавщині, а не на Вінниччині. І хочете - вірте, хочете - ні, але розв'язок придумав сам.
Способів порахувати кількість пар 1-0 небагато, тож цілком можливо, що рішення може співпасти з авторським.
Щодо короткого пояснення. Не знаю, як можна пояснити довше . Вище вже писав - просто порахувати к-ть пар 1-0 в послідовності(хтось із ний обійде іншого і стане в протилежний край строю)
Відредаговано Dim_ov (2011-01-25 17:44:57)
Поза форумом
Dim_ov написав:
Усе ж відповім
....... І хочете - вірте, хочете - ні, але розв'язок придумав сам.
Тому й не потрібно було:)
ось авторський:
#include<iostream> #include<cstdio> using namespace std; int main(){ // freopen("data.txt","r",stdin); // freopen("ans.txt","w",stdout); int n,k; cin>>n; int s1=0,s=0; for(int i=0; i<n; i++){ cin>>k; if(k) s1++; if(!k && s1){ s1--; s++; } } cout<<s; }
навість змінна s1 співпадає
Ну... що ж, цікаво було б прочитати Вашу ідею прописом... детальніше, будь ласка
Поза форумом