26

(5 ответов, оставленных в Problems)

Что такое malloc и assert?

27

(5 ответов, оставленных в Problems)

Смотрел решение задачи на граф. И увидел

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <assert.h>

#define MAXN (100010)

typedef struct tag_node_t {
    int num;
    tag_node_t* next;
} node_t;

typedef node_t* list_t;

list_t adj[MAXN] = {0};
int res[MAXN] = {0};
int color[MAXN] = {0};
int count = 0;
int N = 0;
int M = 0;

void init() {
    for (int i = 1; i <= M; i++) {
        adj[i] = (list_t)malloc(sizeof(node_t));
        assert(NULL != adj[i]);
        adj[i]->num = 0;
        adj[i]->next = NULL;
    }
}


Но не понял момента когда используется

    adj[i] = (list_t)malloc(sizeof(node_t));
    assert(NULL != adj[i]);

28

(0 ответов, оставленных в Problems)

Здравствуйте ! Тут http://e-maxx.ru/wiki/Длинный_корень выложен алгоритм длинного корня.
Но я не понял эти строчки:

    smul(r, 2, tmp1);
    smul(tmp1, res, tmp2);
    shift(tmp2, cur-1);
    summ(prr, tmp2, tmp);
    tmp1[0]=1; tmp1[1]=res;
    smul(tmp1, res, tmp2);
    shift(tmp2, cur*2-2);
    summ(tmp, tmp2, prr); 

Каждую процедуру то понял, а что они вместе делают ... neutral

29

(2 ответов, оставленных в Problems)

Задача. Есть какие-нибудь идеи?

30

(4 ответов, оставленных в Problems)

А вот эту я реши l,r динамикой но почему-то 11 тест WA.
Вот код:

type aaa=record
      s:string;
      d:longint;
     end;

var
d:array[-1..110,-1..110] of aaa;
n,i,j:longint;
s:string;

 function m(q,w:char):boolean;
  begin
   m:=((q='[')and(w=']'))or((q='{')and(w='}'))or((q='(')and(w=')'));
  end;

 function f(l,r:longint):aaa;
   var k:longint; min,t1,t2:aaa;
  begin
   if (l<r)and(d[l,r].d=-1) then
    begin
     if m(s[l],s[r]) then begin t1:=f(l+1,r-1); d[l,r].d:=t1.d; d[l,r].s:=s[l]+t1.s+s[r]; end else
     begin
     min.d:=maxlongint;
      for k:=l to r-1 do
       begin
        t1:=f(l,k); t2:=f(k+1,r);
        if min.d>t1.d+t2.d then begin min.d:=t1.d+t2.d; min.s:=t1.s+t2.s; end;
       end;
      d[l,r]:=min;
     end;
    end;
   f:=d[l,r];
  end;

begin
   assign(input,'input.txt'); reset(input);
   assign(output,'output.txt'); rewrite(output);
    read(s); n:=length(s);
    for i:=1 to n do
     begin
      for j:=-1 to i do begin d[i,j].d:=0; d[i,j].s:=''; end;
      for j:=i+1 to n do begin d[i,j].d:=-1; d[i,j].s:=''; end;
      d[i,i].d:=1;
     end;

   write(f(1,n).s);
 close(input); close(output);
end.

Где у меня ошибка?

31

(4 ответов, оставленных в Problems)

Походу задача совсем не на динамику?

32

(4 ответов, оставленных в Problems)

А где тут динамика?

33

(4 ответов, оставленных в Problems)

Вот задача.Решаю двумерным массивом,выходит Memory limit. Может кто знает решение получше? Предлагали перебирать все центры возможных "почти палиндромов". Но как это сделать?

34

(2 ответов, оставленных в Problems)

Кто-нибудь может помочь c граничным случаем в этой задаче ??

35

(3 ответов, оставленных в Offtopic)

Спасибо smile ! Может еще что-нибудь предложите wink

36

(3 ответов, оставленных в Offtopic)

Хотел бы почитать что-нибудь насчет динамического программирования. Подскажите какие книги почитать.

37

(2 ответов, оставленных в Problems)

Как понять строку "Вычисляем значения F(i, j) в порядке возрастания i, а при равных i – в порядке возрастания j. " ??

38

(2 ответов, оставленных в Problems)

Спасибо smile ОК

Условие задачи

40

(3 ответов, оставленных в Feedback)

Кто так флудит ?!!!

41

(3 ответов, оставленных в Algo)

Спасибо!  smile

42

(3 ответов, оставленных в Algo)

Особенно я не понял строчку :
if (!same_line (l1, l2))
    {
        lines_intersection (l1, l2, p1);
        return 1;
    }
откуда взялась функция same_line (l1, l2) ??

43

(3 ответов, оставленных в Algo)

Пожалуйста объясните подробнее данный алгоритм Точка пересечения отрезков .

44

(2 ответов, оставленных в Algo)

Извиняюсь . Не дочитал статью . В следуйщий раз буду дочитовать ,а потом писать в форум.

45

(2 ответов, оставленных в Algo)

Смотрел статью на Здесь . Потом скомпилировал этот код:

 // O (N log N)
vector<int> d (n+1, INF);
d[0] = -INF;
for (int i=0; i<n; i++)
{
    unsigned j = upper_bound (d.begin(), d.end(), a[i]) - d.begin() - 1;
    if (d[j] < a[i] && a[i] < d[j+1])
        d[j+1] = a[i];
}

И ввел такой инпут :
8
5 3 2 4 6 7 3 9

Он выводит : 2 3 6 7 9, а должен 2 4 6 7 9 .

В чем ошибка??? Или я не правильно что-то сделал?

46

(9 ответов, оставленных в Problems)

Можете показать код или объяснить поглубже?

47

(9 ответов, оставленных в Problems)

Как это сделать? Help please

48

(9 ответов, оставленных в Problems)

Дают координаты точки и координаты начала и конца вектор. Нужно определить принадлежит ли точка лучу, определяемому вектором или нет.

49

(0 ответов, оставленных в Problems)

Помогите решить задачу №101.
Или объясните решение Эйлерового пути . Код с сайта понять не могу(((

50

(9 ответов, оставленных в Problems)

Consider a sequence A of integers, containing N integers between 1 and N. Each integer appears exactly once in the sequence.

A subsequence of A is a sequence obtained by removing some (possibly none) numbers from the beginning of A, and then from the end of A.

Calculate how many different subsequences of A of odd  length have their median equal to B. The median of a sequence is the element in the middle of the sequence after it is sorted. For example, the median of the sequence {5, 1, 3} is 3.

Input

The first line contains two integers, N (1 ? N ? 100 000) and B (1 ? B ? N).

The second line contains N integers separated by spaces, the elements of sequence A.


Output

Output the number of subsequences of A whose median is B.


Sample test data


input

5 4
1 2 3 4 5

output

2

input

6 3
1 2 4 5 6 3

output

1

input

7 4
5 7 2 4 3 1 6

output

4


In the fourth example, the four subsequences of A with median 4 are {4}, {7, 2, 4}, {5, 7, 2, 4, 3} and
{5, 7, 2, 4, 3, 1, 6}.