- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
// #include<....>
using namespace std;
#if ( _WIN32 || __WIN32__ || _WIN64 || __WIN64__ )
#define I64 "%I64d"
#else
#define I64 "%Ld"
#endif
#define PB(x) push_back(x)
#define MP(x,y) make_pair(x,y)
#define dbg(x) cerr << #x << " = " << x << endl
#define fori(i,b,e) for(int i = (b); i < (e); i++)
#define forall(p,s) for(typeof((s).begin()) p = (s).begin(); p != (s).end(); p++)
#define memclr(a) memset((a), 0, sizeof(a))
typedef long long int64;
const long long inf = ((long long)1 << 63) - 1;
#define PROBLEM_NAME "a"
#define add(i, j, val, p, ch) \
do { \
par[i][j][val] = p; \
c[i][j][val] = ch; \
was[i][j][val] = true; \
d[i][j][val] = d[i][j][p] + 1; \
a[i][j][sz[i][j]++] = val; \
} while (0)
void bfs(int n) {
int p[10][10][2];
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
p[i][j][0] = min(i,j);
p[i][j][1] = max(i,j);
}
}
static int par[10][10][2 << 16];
static int c[10][10][2 << 16];
static bool was[10][10][2 << 16];
static int a[10][10][2 << 16];
static int d[10][10][2 << 16];
static int sz[10][10];
static int cur[10][10];
//...
}
int main() {
//...
}
Часть шаблона, ну еще кое-какие макросы, т.к. влом было писать нормально. Зато работало. bfs не обыкновенный, если кого это смутит.
absolut 27.10.2010 07:27 # 0
baton 27.10.2010 11:11 # 0
absolut 27.10.2010 11:41 # +1
т.е. в оригинале написано #define PROBLEM_NAME "d" ? :))
baton 27.10.2010 11:48 # 0
absolut 27.10.2010 11:51 # 0
bugmenot 27.10.2010 13:07 # +3
42. алгоритмическая задача, решаемая обходом дерева в ширину (6 букв)
Govnoeb 27.10.2010 14:16 # 0
absolut 01.11.2010 00:01 # +1
baton 01.11.2010 01:09 # 0
Дано натуральное число n, не превосходящее 2^16.
Найти число, кратное n и состоящее из минимального количества различных цифр. Среди всех таких вывести минимальное.
Для 16 ответ 16. Для 513 ответ - 333..33 (всего 18 троек).
К слову, там не дерево.
Dummy00001 27.10.2010 16:05 # +1
а шо под виндами stdint.h нету?
> const long long inf = ((long long)1 << 63) - 1;
и это как бы правильнее было бы ((1ll << 63) - 1) писать.
но и все остальное попахивает...
seonull 28.10.2010 05:49 # 0
a[i][j][sz[i][j]++] = val; \ .......
да, мьсе знает толк.....
3.14159265 29.10.2010 20:46 # 0
дальше не читал
daemon_master 30.10.2010 00:12 # 0
istem 30.10.2010 01:37 # +1
baton 01.11.2010 01:20 # 0
Можно было вообще писать тупо код вместо макросов, но тогда пришлось бы наслаждаться слежкой за тремя разными участками и наслаждаться.
В конце концов, можно передавать массивы в качестве параметров, но, блин, писать много, а ситуация была не та, когда бьют за быдлокод.
"Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь?... запостите его..."
Несмотря на все вышесказанное код был. Оставалась самая малость.