Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Alex (13:53:59 22/10/2010)
- Alex (13:50:44 22/10/2010)
- Snark (13:45:07 22/10/2010)
- repeat pls
- Snark (13:45:20 22/10/2010)
- wrong encoding
- Alex (13:45:39 22/10/2010)
- Zdravstvyite, kogda bydyt zimnie sbori v PZ?
- Snark (13:46:57 22/10/2010)
- 26 jan - 5 feb
- Snark (13:47:05 22/10/2010)
- кстати, поздравляю с победой
- Alex (13:47:16 22/10/2010)
- Spasibo! :)
- Витя Баринов (13:51:22 22/10/2010)
- :-)
- Alex (13:52:01 22/10/2010)
- если Харьков будет с 10 по 20 мы успеем туда сгонять )
- Витя Баринов (13:52:28 22/10/2010)
- туда, это куда?
- Alex (13:52:42 22/10/2010)
- Харьков
- Витя Баринов (13:52:51 22/10/2010)
- угу, будет вообще клево
- Витя Баринов (13:53:00 22/10/2010)
- от меня жена уйдет
- Alex (13:53:10 22/10/2010)
- финал того стоит :)
- Витя Баринов (13:53:22 22/10/2010)
- иди ты
- Вован (14:51:17 22/10/2010)
- Саша, почему ты создаешь массив am, на 1 << ((width * (width - 1)) / 2)
- Alex (14:51:36 22/10/2010)
- количество пар будет ((width * (width - 1)) / 2)
- Alex (14:51:42 22/10/2010)
- нам надо хранить множество этих пар
- Alex (14:51:52 22/10/2010)
- какие были каких нет
- Вован (14:56:29 22/10/2010)
- это кол-во способов поставить 2 индекса на полосе длиной width?
- Alex (14:56:34 22/10/2010)
- да
- Alex (14:56:45 22/10/2010)
- левый и правый угол
- Alex (15:16:34 22/10/2010)
- на acm.ro фотки появились
- Вован (15:16:45 22/10/2010)
- угу, я видел :)
- Alex (15:16:51 22/10/2010)
- чо не сказал
- Вован (15:16:53 22/10/2010)
- понравилось?)
- Вован (15:17:01 22/10/2010)
- я думал что ты то же видел
- Вован (15:17:13 22/10/2010)
- мы наверно на этот сайт теперь заходим чаще всего :)
- Alex (15:33:05 22/10/2010)
- :) чо у тебя с 500
- Вован (15:33:19 22/10/2010)
- сижу смотрю
- Вован (15:33:26 22/10/2010)
- пока не могу понять
- Alex (15:33:29 22/10/2010)
- в окно? )
- Вован (15:33:35 22/10/2010)
- в твой код :)
- Alex (15:33:44 22/10/2010)
- чо не понятно
- Вован (15:34:13 22/10/2010)
- что значит цикл по black? и как ты потом используешь эту переменную?
- Alex (15:34:23 22/10/2010)
- black white это маски
- Вован (15:34:28 22/10/2010)
- угу
- Alex (15:34:32 22/10/2010)
- маска хранит какие пары углов уже были а какие нет
- Alex (15:34:41 22/10/2010)
- используется это в
- if ((black & nblack) != 0 || (white & nwhite) != 0) {
- continue;
- }
- Вован (15:34:54 22/10/2010)
- am[black][white] - кол-во валидных прямоугольников
- Вован (15:34:56 22/10/2010)
- ?
- Alex (15:35:00 22/10/2010)
- нет
- Вован (15:35:08 22/10/2010)
- аааа
- Alex (15:35:19 22/10/2010)
- количество способов замостить первые ряды
- Alex (15:35:25 22/10/2010)
- так что получились маски black white
- Alex (15:35:30 22/10/2010)
- маски уголков
- Вован (15:35:37 22/10/2010)
- это мы смотри то что уже установлено, а потом пытаемся подобрать 2 других варианты, чтоб ничего не нарушилось? :)
- Alex (15:36:03 22/10/2010)
- почему 2 других ? мы перебираем все возможные замощения для следующего ряда в цикле
- for (int set = 0; set < (1 << width); ++set) {
- Alex (15:36:13 22/10/2010)
- проверяем что оно не противоречит с исходной доской
- boolean ok = true;
- for (int i = 0; i < width; ++i) {
- if (row[i] == 'B' && get(set, i) == false) {
- ok = false;
- break;
- }
- if (row[i] == 'W' && get(set, i) == true) {
- ok = false;
- break;
- }
- }
- Вован (15:36:14 22/10/2010)
- ок, точно :)
- Вован (15:36:26 22/10/2010)
- да, мне твой код нравится все больше и больше :)
- Alex (15:36:27 22/10/2010)
- составляем новые маски уголков
- int nblack = 0;
- int nwhite = 0;
- for (int i = 0; i < width; ++i) {
- for (int j = i + 1; j < width; ++j) {
- if (get(set, i) && get(set, j)) {
- nblack |= (1 << calculateIndex(i, j, width));
- }
- if (!get(set, i) && !get(set, j)) {
- nwhite |= (1 << calculateIndex(i, j, width));
- }
- }
- }
- Alex (15:37:06 22/10/2010)
- если это нарушилось
- if ((black & nblack) != 0 || (white & nwhite) != 0) {
- continue;
- }
- то получается что попались одинаковые черные или белые уголки то есть получился прямоугольник, значит хреново
- Alex (15:37:18 22/10/2010)
- иначе все ОК
- next[black | nblack][white | nwhite] += am[black][white]; прибавляем количество способов
- Alex (15:37:28 22/10/2010)
- | используется потому что появились новые уголки
- Alex (15:38:23 22/10/2010)
- calculateIndex(i, j, width) эта функция которая определяет порядковый индекс нужной нам пары
- Alex (15:51:20 22/10/2010)
- разобрался?
- Вован (16:23:20 22/10/2010)
- ты что-то писал?
- Вован (16:23:23 22/10/2010)
- я уходил
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement