Всем привет....
Сегодня состоится очередной раунд COCI.
Желающие участвовать могут войти в систему/зарегиться здесь.
Для входа выберите COCI 2011/2012 — Contest #2.
Всем заранее желаю удачи...
UPD: появились результаты.
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
4 | atcoder_official | 161 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
9 | nor | 153 |
Всем привет....
Сегодня состоится очередной раунд COCI.
Желающие участвовать могут войти в систему/зарегиться здесь.
Для входа выберите COCI 2011/2012 — Contest #2.
Всем заранее желаю удачи...
UPD: появились результаты.
Название |
---|
How solve problem D (AERODROM) ???
you can view my O(N*T) solution where T=LOG(10^18)
I use binary search for finding answer of 1-10^18 interval (10^18 max ans size in my opinion :D) I think this is correct,I will know in a few minutes
UPD: This is correct.
It isn't hard. Binary search in answer. I suppose you can easy understand my code: Aerodrom
For M<300 000 I hope priority_queue (keeping in it Tk*how_many_people_occupy_it) solution works.
Как то 2 последние задачи на впихивание по памяти вышли. :(
в предпоследней можно было строки отсортить. и с памятью все ок.
Я думал над таким, но такое еще нужно загнать во время.
нет, оно вообще легко заходит.
Я очень не думал над реализацией, думал такое не зайдет. Видимо нужно было чуть больше посидеть над ней. :)
Ага, как-то я не подумал, что маленький суммарный размер массивов — это еще не все. Сам dfs съел памяти больше, чем 32 МБ.
И наложился вопрос: почему бы не поставить МЛЕ 256 МБ?
Потому что это без такого ограничения, на мой взгляд, эта задача на 6ю не тянула.
Ну тогда можно было сразу 8 МБ ставить. Хотя, с 32 МБ это вышло даже поучительно — иногда память съедается там, где вообще не ждешь.
Ну я пока не представляю, как это можно запихнуть в 8 МБ, если разбивать каждый регистр на 32 вершины для BFS. Получаем, что одна очередь = 3.2М * 4. А как не разбивать я пока тоже не знаю, можно поделиться пожалуйста?
Ну ответы можно хранить в массиве интов длины 100000. А насчет bfs — граф-то у нас специфический, так что в очереди одновременно сильно много чисел не могут находиться. Если писать с STL'евской queue, то память будет вовремя очищаться. Кстати, 7.7 МБ это если хранить граф списками смежности, создав 100000 векторов. Если же на массивах сделать, то еще меньше будет.
ОК, спасибо, но тут всё-таки надо опираться на недоказанные вещи (что в очереди не будет много вершин одновременно — или это доказывается?), а с 32 МБ можно доказать что хватит на всех тестах, на всех языках (STL есть только в C++, а писать свой queue с выделением памяти — overkill) и не надо особо сильно извращаться, на мой взгляд. Так что по-моему, 8 всё-таки было бы перебором.
Если уже говорить о других языках, то закономерный вопрос: эта задача решается на Java?
Насчет размера очереди — я не знаю, как доказать что он маленький и всегда ли это так.
Как уже ниже рассказали можно с помощью СНМ. На Java зашло без проблем. Хотя BFS тоже должен зайти, ребер мало, надо только очередь хранить.
А если то же самое сделать bfs-ом, то проходит все тесты, заюзав максимум 7.7МБ. Задача на то, чтобы попихать.
Individual results update!
UPD: My score is 350(50+80+100+120)
Is problem F(PROCESOR) a graph problem?
I'm sorry if this question is really stupid :(
Yes, it is 2-SAT problem. But memory limit is realy stupid.
Can you explain more why problem F is 2-SAT problem? Thanks
Why is it 2-SAT? You have a graph (32*N vertices) with edges which demand either different numbers on endpoints or the same. You can just DFS/BFS it to enumerate each connected component and since each component can be easily inverted — you can take the most significant vertice and assign 0 to it at the start of DFS/BFS.
The only challenging point is to get it into memory limit.
And you can get into memory limit by making 2 optimizations:
While you have 32*E edges, don't store 32*E edges, store just E, which I will call multiedge. Since every multiedge generates exactly one edge for each vertice in the given register, we can decode it while doing DFS/BFS.
Use BFS, since it haven't got any overhead from recursion. Hence you only need 2 3.2M element arrays — one of char for storing assign bits (and simultaneously checking if we have been in that vertice) and one of int for the BFS queue.
We can use non-recursive DFS as well.
But why? BFS is meant to be non-recursive, while in DFS you would have to store a lot more information about each vertice to be able to emulate recursion. So it might not pass in ML either, or I am missing something.
I don't understand. Can't we just change queue to stack?
Yeah, but you still need more information, like the pointer of what neighbor of that vertice we are currently analyzing.
Why? I always wrote non-recursive BFS and DFS with the only difference of queue and stack. Or do you mean some specifics of your solution for this problem?
Yes, you can use a modified Union-Find.
I had a bug in task 6 , when I finded it, the cotest ended :( This is my corrected code.
UPD: my score is 453
You still have 64 points — you got MLE.
Sorry, I don't mean to be rude, but your comment easily suggests that you claim that you have full solution to 6th task.
thanks, everything is ok :D
My score is 490(50+80+100+120+140+0). I couldn't find any solution on the last problem T.T
Weak tests in problem AERODROM My solution fails test:
but passes systests. Have anybody the same bug?
Not only that — shouldn't you have long long overflow in this case?
Yes, and in my test I have overflow too.
Well, luck is on your side then. :) Maybe they haven't thought of this specific error, while generating the test, although I thought that this could be the place where many could fail. But as it depends on binary search values, and from a quick look you have a little bit different binary search from what I usually see people writing (either not changing middle value at all when assigning it, or changing but only in one case, not in both), maybe you got away with this for that reason.
My solution is similar to your, but I set the bound to 2e18, and it fails on systests (105/120). Our solutions have the same bug, but I have less points than you have. It seems strange.
I'm lucky today. I think it's impossible to catch all bugs using 8 tests.
Imho, it's very bad idea to test solutions on less than 10 test cases (for example, today's task "malcolm" has only 5 tests)... Then I see so few tests, I remember informatics olympiads in my school, where we always have 5 tests, and almost everything passes them ;)
PS and, ofc, I have the same bug as tunyash in aerodrom, but my solution gets full score...wtf
I wonder will they add some extra tests, as they don't display general results immediately ?
Why am I getting "SIGABRT" while I am not using any assert method out there?
It seems that it is Memory Limit Exceeded.
Then why? Isn't HERKABE supposed to be solved using trie? so keeping 3000 int-s and err... up to 3000*3000 nodes (which consists of two int-s one vector).
I also submitted a solution with trie, but got lots of MLE. In the end you can do it by sorting the strings, and counting recursively, simulating you've got a trie.
I solved that by sorting the strings, but I don't know why it works in time. I just used strcmp to sort. Here's the code
Is just STL sort is fast to sort strings?
Does this solution passed from all the test cases? It seems wrong at the following: 6 aa aa ab ab a a
The correct answer should be 12 while this program outputs 6. I also used same technique as you, it seems that each function GetResult with unique parameter set corresponds to each node of the trie with which participants tried to solve this problem with. Therefore, our solutions seem to be base on creating this trie implicitly. :)
"The names are distinct and given in no particular order."
So, that test case isn't valid. :)
32MB is a ridiculously small memory limit...
This is the first time I participated to COCI, so I want to know when they usually publish results.
A few days after the contest but no more than a week.
The results are up!
As i thought, when I saw the problems after the contest — many guys with maximum score.
is there any way to log in there now?
Yes, you can use this link.
when is the next round of this contest ?
http://www.timeanddate.com/worldclock/fixedtime.html?day=16&month=02&year=2013&hour=14&min=0&sec=0&p1=0