Индивидуальные задания повышенной сложности. Пираты Карибского моря: Совет (Советы и тактика к игре) Программирование на с#

Для решения геометрических задач повышенной сложности необходимо:

1) знать, как представляются на плоскости такие геометрические объекты, как точка, прямая, отрезок и окружность (в рамках подготовки к школьным олимпиадам можно ограничиться плоскостью, хотя про пространство также не следует забывать);

2) уметь находить уравнение прямой, соединяющей две заданные точки;

3) уметь определять координаты точки пересечения двух прямых;

4) знать, как провести перпендикуляр к прямой или определить, являются ли прямые параллельными;

5) уметь находить скалярное и векторное прооизведение;

6) находить площадь многоугольника;

7) уметь работать с фигурами на плоскости.

Напомним основные моменты, связанные с этими понятиями.

x
y
a
b
φ
y 1
y 2
x 1
x 2

Рис. 15.1. Иллюстрация к скалярному произведению векторов

Скалярное произведение двух векторов – это число, равное произведению модулей этих векторов на косинус угла между ними, (a ,b )=|a | ∙ |b | ∙ cos φ. Если вектор a имеет координаты (x 1 , y 1),а вектор b координаты – (x 2 , y 2), то скалярное произведение вычисляется по формуле (a ,b )= x 1 ∙ x 2 + y 1 ∙ y 2 .

Заметим, что если угол φ острый, то скалярное произведение (a ,b )>0, если угол φ тупой, то (a ,b )<0. Если два вектора перпендикулярны, то их скалярное произведение равно нулю.

Векторным произведением двух векторов a и b называется вектор [a × b ], такой, что

длина его равна |[a × b ]|=|a | ∙ |b | ∙ sin φ;

вектор [a × b ] перпендикулярен векторам a и b ;

вектор [a × b ] направлен так, что из его конца кратчайший поворот от a к b виден происходящим против часовой стрелки.

Длина векторного произведения равна площади параллелограмма, построенного на векторах a и b .

Через координаты векторов a и b векторное произведение выражается следующим образом:

[a × b ]= = (y 1 ∙ z 2 – z 1 ∙ y 2) i + (x 1 ∙ z 2 – z 1 ∙ x 2) j + (x 1 ∙ y 2 – y 1 ∙ x 2) k,

где i , j , k – единичные вектора осей Ox, Oy, Oz соответственно.

x
y
a
b
α
β

Рис. 15.1. Иллюстрация к ветороному произведению

При решении задач на плоскости координаты z 1 и z 2 равны нулю. В этом случае [a × b ]=(x 1 ∙ y 2 - x 2 ∙ y 1)∙ k .

Если вектор a образует с осью Ох угол α, а вектор b – угол β, то для скалярного произведения справедлива формула [a × b ]=(|a | ∙ |b | ∙ sin(β-α))∙ k . Это означает, что для ненулевых векторов векторное произведение равно нулю тогда и только тогда, когда векторы параллельны. Если поворот от вектора а к вектору b по наименьшему углу выполняется против часовой стрелки, то [a × b ]>0, если по часовой стрелке, то [a × b ]<0.



Рассмотрим задачи, при решении которых используются скалярное и векторное произведения.

Задача 1 «Штраф за левые повороты» . В городе Х водителям запрещено выполнять левые повороты. За каждый такой поворот водитель должен уплатить штраф в размере М рублей. Для слежки за водителями в городе установлена компьютерная система, фиксирующая координаты автомобиля в начале движения, в конце движения и во время поворота.

Исходные данные : N – количество зафиксированных координат автомобиля, (x i , y i ) – координаты автомобиля в процессе движения, i =1,2, …, N , где (x 1 , y 1) – точка начала движения, (x N , y N ) – последняя точка маршрута автомобиля.

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

Траекторию движения автомобиля можно представить в виде ломаной, состоящей из направленных отрезков из точек (x i , y i ) в точки (x i +1 , y i +1 ), i =1,2,…,N -1.Поворот считается левым, если направление текущего отрезка пути a i +1 меняется относительно предыдущего отрезка a i в левую сторону, т.е. против часовой стрелки.

(x i -1, y i -1)
(x i , y i )
(x i+ 1, y i+ 1)
Таким образом, решение задачи сводится к вычислению количества пар участков пути a i и a i +1 , для которых выполняется условие [a i × a i +1 ]>0. Координаты векторов a i и a i +1 вычисляются через координаты точек (x i , y i ): a i = (x i - x i -1 , y i - y i -1), a i +1 = (x i +1 - x i , y i +1 - y i ), следовательно,

[a i × a i +1 ]= (x i - x i -1) (y i +1 - y i ) – (y i - y i -1)(x i +1 - x i ), i =2, …, N -1.

Задание 1. Реализуйте программно задачу «Штраф за левые повороты»

Задача 2 «Здесь будет город-сад». Жители одного дома города Х решили высадить у себя во дворе несколько деревьев. Так как жильцы не смогли договориться, как должны быть расположены посадки, то каждый посадил дерево в том месте двора, где ему захотелось. После проведения посадок полученный сад решили обнести забором. Но пока доски не привезли, деревья обвязали одной длинной веревкой.

Исходная информация : N – количество деревьев в саду, (x i , y i ) – координаты деревьев, i =1,2, …, N . Так как были высажены молодые саженцы, то их толщиной можно пренебречь.

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

Эта и подобные ей задачи сводятся к определению для заданного множества точек на плоскости выпуклой оболочки, то есть выпуклого многоугольника с вершинами в некоторых точках из заданного множества, охватывающего все его точки. В приведено несколько вариантов решения такой задачи с учетом временных затрат на выполнение алгоритмов. Здесь мы рассмотрим способ, использующий свойства скалярного произведения векторов.

Будем строить выпуклую оболочку в порядке обхода участка по часовой стрелке. Найдем самую левую точку М 0 =(x 0 , y 0), x 0 = min{x i }. Если таких точек несколько, то возьмем самую нижнюю из них. Эта точка наверняка принадлежит искомой выпуклой оболочке. Зададим первоначальный вектор a 0 с началом в точке (x 0 , y 0), параллельный оси Oy.

Следующей точкой оболочки будет такая точка М 1 , чтобы вектор a 1 с началом в точке М 0 и концом в точке М 1 образовывал с первоначальным вектором a 0 минимальный угол. Если таких точек несколько, то выбирается точка, расстояние до которой максимально.

Далее процесс продолжаем, то есть ищем точку М 2 с минимальным углом между вектором a 1 и вектором a 2 с началом в точке М 1 и концом в точке М 2 , затем точку М 3 и т.д. Процесс прекращаем, когда дойдем до первой выбранной точки или количество точек в оболочке станет равно N .

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

Задание 2. Реализуйте программно задачу «Здесь будет город-сад»

Задача 3 «Заяц» . Недалеко от города Х находится зоосад. Здешний житель, заяц, хаотично прыгая, оставил след в виде замкнутой самопересекающейся ломаной, охватывающей территорию его владения. Найти площадь минимального по площади выпуклого многоугольника, описанного вокруг этой территории.

В данной задаче необходимо не только найти выпуклую оболочку множества точек, но и вычислить площадь выпуклого многоугольника с заданным набором вершин.

Исходные данные : N – количество вершин выпуклого многоугольника, (x i , y i ) – координаты вершин, i =1,2, …, N .

Требуется определить площадь выпуклого N -угольника.

Площадь N -угольника может быть вычислена как сумма площадей треугольников, из которых N -угольник составлен. Для нахождения площади треугольника используем векторное произведение. Длина векторного произведения векторов, как известно, равна удвоенной площади треугольника, построенного на этих векторах. Пусть вершины треугольника расположены в точках A=(x 1 , y 1), B=(x 2 , y 2 ), C=(x 3 , y 3 ). Совместим начало координат с первой точкой. Векторное произведение равно

=
,

следовательно, площадь треугольника равна

S ABC =1/2 ((x 2 - x 1) (y 3 – y 2) – (y 2 - y 1)(x 3 - x 2)).

Значение величины S ABC может быть как положительным, так и отрицательным числом, так как оно зависит от взаимной ориентации векторов AB и AC, поэтому говорят, что площадь ориентированная.

А 1
А 2
А 3
А 4
А 5
Для нахождения площади N -угольника последний требуется разбить на треугольники и найти сумму ориентированных площадей этих треугольников. Разбиение N -угольника на треугольники можно провести так: зафиксировать одну из вершин N -угольника, например, первую A 1 =(x 1 , y 1) и рассматривать все треугольники A 1 A i A i +1 , i =2, 3,…, N -1.

Заметим, что аналогичным способом можно находить площадь произвольного многоугольника.

Использование свойства ориентации площади треугольника, вычисленной по векторному произведению, позволяет определить, является ли заданный многоугольник выпуклым. Для выпуклого многоугольника все треугольники, образованные тройками соседних вершин в порядке их обхода, имеют одну ориентацию. Поэтому проверка многоугольника на выпуклость может быть проведена с помощью последовательного сравнения знаков векторных произведений для всех пар соседних сторон многоугольника.

Задание 3. Реализуйте программно задачу «Заяц»

Задача 4 «Тигр в загоне». Недалеко от города Х находится заповедник, в котором обитают уссурийские тигры. Работники заповедника очень переживают, когда тигр покидает охраняемую зону. Программа охраны уссурийских тигров предусматривает снабжение каждого тигра ошейником с радиомаяком. Сигнал от тигриного радиомаяка поступает в центр охраны и позволяет определить местоположения тигра. Территория заповедника представляет собой произвольный многоугольник.

Исходные данные : N – количество вершин многоугольника, задающего заповедник, (x i , y i ) – координаты его вершин, i =1,2, …, N . (X , Y ) – координаты точки, в которой находится тигр.

Требуется определить, находится ли тигр на территории заповедника, или надо срочно снаряжать спасательную экспедицию.

Очень часто при решении задач геометрического содержания требуется проверить, лежит ли заданная точка внутри или вне многоугольника. Таким способом можно решить, например, задачу о Бармаглоте, проверяя каждую точку Бармаглота относительно одеяла-многоугольника. Есть много способов проверки принадлежности точки многоугольнику, однако мы приведем здесь один из них, основанный на использовании произведения векторов.

P
Q
Идея метода заключается в том, чтобы определить сумму углов, под которыми стороны многоугольника видны из проверяемой точки. Если точка лежит внутри многоугольника, то суммарный угол равен 2π (точка Р на рисунке), если же точка лежит вне многоугольника, то сумма углов не равна 2π (точка Q).

Таким образом, для решения надо перебрать в цикле последовательно все вершины многоугольника и найти сумму углов между векторами PA i и PA i +1 , i =1,2, …, N. Не забудьте добавить угол между векторами PA N и PA 1 . Для определения величины угла между векторами нам потребуется формула скалярного произведения.

Так как стороны многоугольника должны рассматриваться последовательно, в порядке обхода вершин, то при нахождении суммарного угла следует учитывать взаимное расположение векторов. Угол, под которым сторона видна из исследуемой точки, может быть как положительным, так и отрицательным. Для определения знака угла воспользуемся векторным произведением. Знак векторного произведения и определит знак конкретного угла в общей сумме.

Задание 4. Реализуйте программно задачу «Тигр в загоне»

Задача 5 «Пересечение отрезков». Дано n отрезков. Реализовать программу, находящую все их пересечения между собой. Отобразить решение графически.

На плоскости заданы два отрезка a и b, a - точками A 1 (A 1 x ,A 1 y) и A 2 (A 2 x ,A 2 y), а b - точками B 1 (B 1 x ,B 1 y) и B 2 (B 2 x ,B 2 y). Найти и напечатать возможную точку их пересечения C(C x ,C y). Рассмотрим первый отрезок a. Уравнение прямой, на которой он лежит можно записать так:

x a = A 1 x + t a (A 2 x - A 1 x)

y a = A 1 y + t a (A 2 y - A 1 y)

Здесь, A 1 x ,A 1 y ,A 2 x ,A 2 y - константы, x a ,y a – точки принадлежащие отрезку, при t a изменяющмеся от 0 до 1. Аналогично для отрезка b:

x b = B 1 x + t b (B 2 x - B 1 x)

y b = B 1 y + t b (B 2 y - B 1 y)

Таким образом, приравнивая соответствующие координаты, получаем задачу нахождения параметров t a ,t b , при которых бы выполнялись равенства:

A 1 x + t a (A 2 x - A 1 x) = B 1 x + t b (B 2 x - B 1 x)

A 1 y + t a (A 2 y - A 1 y) = B 1 y + t b (B 2 y - B 1 y)

После разрешения системы относительно t a ,t b получаем:

t a (A 1 x - A 2 x) + t b (B 2 x - B 1 x) = A 1 x - B 1 x

t a (A 1 y - A 2 y) + t b (B 2 y - B 1 y) = A 1 y - B 1 y

А это есть система из двух линейных урвавнений относительно t a ,t b .

Известно, что система:

a 1 x + b 1 y = c 1

a 2 x + b 2 y = c 2

имеет следующее решение:

где d - определитель матрицы,

d = a 1 b 2 - a 2 b 1 ,

d x = c 1 b 2 - c 2 b 1 ,

d y = a 1 c 2 - a 2 c 1 .

В нашей системе относительно t a ,t b:

a 1 = A 1 x - A 2 x

b 1 = B 2 x - B 1 x

c 1 = A 1 x - B 1 x

a 2 = A 1 y - A 2 y

b 2 = B 2 y - B 1 y

c 2 = A 1 y - B 1 y

откуда легко находится d,d x ,d y . Если d отличен от нуля, то система имеет единственное решение. Правда, следует помнить, что искомые t a ,t b - параметрически задают отрезки только если они лежат в диапазоне , в противном случае точка пересечения прямых, на которых лежат отрезки, находится вне этих самых отрезков.

Если d равен нулю, а хотя бы один из d x ,d y отличен от нуля, то отрезки лежат на параллельных прямых, или как говорят математики, они коллинеарны. Если же все три d,d x ,d y равны нулю, то это значит, что отрезки лежат на одной и той же прямой, где опять возможны три случая - либо отрезки не перекрываются, либо перекрываются в одной точке, либо перекрываются в бесконечном множестве точек.

Решение ряда задач повышенной сложности опиратеся на методы рассмотренные в комбинаторике, а именно на возможность генерации: сочетаний, перестановок, размещений и перечислений элементов.

Одним из важных элементов комбинаторики являются перестановки . Перестановки без повторений - комбинаторные соединения, которые могут отличаться друг от друга лишь порядком входящих в них элементов. Число таких перестановок определяется как n!.

Для числа 3, количество перестановок будет равно 3! = 3 * 2 * 1 = 6. Для четырех: 4! = 4 * 3 * 2 * 1 = 24.

Часто для генерации перестановок используется алгоритм Дейкстры для получения всех перестановок по алфавиту. Разберем этот алгоритм.

Пусть у нас есть первая перестановка (например 1234). Для нахождения следующей выполняем три шага.

1. Двигаясь с предпоследнего элемента перестановки, ищем элемент a[i], удовлетворяющий неравенству a[i] < a. Для перестановки 1234, это число 3, т. к. (3 < 4).

2. Меняем местами элемент a[i] с наименьшим элементом, который:

а) находится праве a[i].

б) является больше чем a[i].

В нашем случае меняем 3 и 4.

3. Все элементы стоящие за a[i] сортируем. В нашем случем нужно отсортировать число 4, но это единственный элемент, следовательно так его и оставляем.

В результате выполнения этих трех шагов получаем следующую по алфавиту перестановку 1243.

Выполнять эти шаги нужно циклически до тех пор, пока в перестановке не будет находится искомый в первом шаге элемент a[i], т. е. пока перестановка не станет отсортированной по убыванию: 4321.

Перестановки с повторениями - комбинаторные соединения, в которых среди образующих элементов имеются одинаковые. В таких соединяниях участвуют несколько типов объектов, причём имеется некоторое количество объектов каждого типа. Поэтому в выборках встречаются одинаковые элементы.

Для более подробного изучения этого раздела рекомендуется .

Задание 6. Гномики решили встречать гостей с разноцветными шарами. Раздай шарики гномикам так, чтобы цвет шарика не был такой же, как цвет колпачка, и чтобы у гномиков в одинаковых по цвету колпачках были шарики разного цвета и разной формы. Напишите программу, выводящую все возможные варианты раздачи шариков.

Задание 7. Имеются цифры от 1 до 9 расположенные по возрастанию (убыванию). Требуется расставить между ними произвольное количество знаков <<плюс>> и <<минус>>, чтобы получилось выражение со значением 100. Например

123+4-5+67-89 = 100
9-8+76-5+4+3+21 = 100

Найти все возможные варианты таких выражений.

Задача 8. Дан двумерный массив, заполненный нулями и единицами. Найти прямоугольник, наибольшей площади, заполненный единицами.

Площадь прямоугольников изменяется от максимальной (весь массив) до минимальной (прямоугольник состоящий из одной 1). Каждый прямоугольник конкретной площади может быть построен множеством способов. Для площади S допустимый прямоугольник это такой, произведение сторон которого, равно S. Мы должны для каждого значения площади перебрать все допустимые способы построения прямоугольников. Каждый прямоугольник конкретной площади и формы может располагаться в массиве различным образом. Точнее сказать, его левая верхняя вершина может находится в разных точках массива. Следовательно, для прямоугольника определённой площади и формы мы должны перебрать все возможные расположения.

Может показаться, что программа для большого массива будет работать слишком долго, но есть серьёзные возможности для её ускорения. А именно:

1. Если площадь перебирать от максимальной к минимальной, то первый найденный прямоугольник и будет искомым.

2. Прямоугольник конкретной площади и формы не поместится в любом положении в массив.

Учёт этих утверждений ведёт к очень серьёзному ускорению программы.

Задание 9. «Вирус» Колония клеток представляет собой квадратную матрицу порядка N (N < 500). В колонию проникает M (M < 11) вирусов, которые поражают клетки с координатами (X1, Y1), ... (Xm, Ym). За одну единицу времени вирус проникает в клетки, соседние с зараженными (соседними считаются клетки, имеющие общую сторону). Требуется написать программу, которая определит время заражения всей колонии. Графически показать процесс заражения.

Задание 10. «Сундук Билли Бонса» Билли Бонс положил в сундук некоторое количество золотых монет. На второй год он вынул из сундука сколькото монет. Начиная с третьего года он добавлял столько монет, сколько было в сундуке два года назад.

Требуется написать программу, которая определит сколько монет было в сундуке в первый и во второй года, если в X-м году там оказалось ровно Y монет. (3<=X<=20) и Y (1<=Y<=32767).

Пояснение: если в первый год положить 5 монет, а во второй год вынуть 3 монеты, то начиная с первого года в сундуке будет 5, 2, 7, 9, 16, 25, ... монет.


1. Если хочется много денег и сразу - зайдите к ростовщику, займите у него денег (в начале дают только 3000), положите их в сундук там же и обратитесь за кредитом вновь (как ни странно - денег дадут). Эту операцию можно повторять бесчисленное количество раз, сумма вашего долга не меняется, а фактически деньги (в сундуке) растут. Когда надоест или денег уже хватит, забирайте накопленное из сундука, расплачивайтесь с ростовщиком и уносите все полученное. Когда у вас будет хороший корабль и нормальная репутация, ростовщики будут предлагать больше.

2. Если хочется много опыта и способностей, на честно полученные "многоденег" (см. выше) купите линкор и плывите к вражескому форту. Желательно еще нанять хороших канонира и первого помощника. Заряжайте орудия ядрами, отплывите подальше за зону досягаемости вражеских орудий и бомбите форт. За каждое уничтоженное орудие дают по 1000 очков опыта. Только успевайте подправлять характеристики своего персонажа. Одной из первых полученных вами способностей должна быть способность обмена опытом (это почти в самом низу списка способностей). Тогда ваши будут расти вместе с вами.

3. При наличии большого количества денег и хорошей репутации события в сценарии будут развиваться несколько по иному, чем если проходить все сразу и в лоб. Поэтому имеет смысл сначала "накачаться" деньгами и опытом, а уже потом заявляться к губернатору Реймонда.

Желаю успехов.

Запустите игру и загрузите 3 по счету запись сохранения.
Войдите в игру и введите cheatgjlhjdf появится строка 100000 и нажмите у вас появятся 100000 пиастров.

Как можно легко заработать денег.
В таверне подойдите к наемному офицеру и начните разговаривать с ним. Он вас спросит не нужен ли вам офицер. На что вы ответите, что нужен и после чего он вам скажет за какую цену он к вам пойдёт. Вы должны ответить ему: “Не сильно ли много он спрашивает за себя”. Тогда офицер сбросит цену на 200 золотых. Вы можете так продолжать пока он не сбросит цену до 0 после чего он будет уходит в минус (то есть будет платить вам за то, чтоб вы его взяли к себе).

Откройте файл Pirates of the caribbean/PROGRAM/Rumour_Data.c
Поменяйте все "active" на "passive" и сохраните файл.
После этого у вас не будут портиться отношения с дружественной страной, если вы будете нападать на их корабли. Больше всего подойдёт любителям абордажа.
P.S. Это работает, когда вы нападаете на 1,2 или 3 корабля. Если нападёте на 4 корабля, то отношения всё-таки испортятся.

Если у вас водятся деньги в кармане, то прямиком бегите в Верфь.
Прикупите себе линкор и поставте самые дорогие пушки. Ваш корабль будет круче всяких Manowarов!

В начале игры, после того как пират вам объяснит как брать предметы, он пригласит вас проверить ваши возможности с саблеи. Соглашайтесь! Даже если вы его победите в первый раз продолжайте фихтовать с ним ещё и ещё пока не получите "LEVEL ". Да вы не сможете заработать много, но это легкий способ поднятся на "LEVEL 1"

Можно заработать 2000 пиастров за болтовню с священником (эту операцию можно проводить бесконечно).
Для этого вам нужно на Редмонде зайти церковь и поговорить со священником и предложить помощь(чтобы взять задание вам нужна хорошая репутация). Плывите на Оксбей в порт Гринфолд. Когда загляните в здешнюю церковь поговорите со священником. Он будет отрицать, но ему нужно сказать, что все можно уладить и вы письма можете "случайно" потерять. Потом он платит 2000, но письма не отдавайте и можно опять его опускать.

Если у вас есть крутой пистолет, то врагов можно перемочить только с помощью него, а сделать это можно так: выстреливайте в врага, а потом быстро сохранайтесь, выходите в главное меню и загружайте игру, класс, оружие уже перезарядилось высреливайте и продолжайте выполнять эту процедуру пока не "перемочите" всех врагов. УДАЧИ!!

Если хочешь получить опыт быстро, то как возьмешь на абардаж какой-нибудь корабль, перетаскиваешь с него все цености и топишь, только надо сразу топить, нажать на абардаж, я так проделал 30 раз.

Хотите достать денежек, тогда мой совет это то, что вам нужно!
Во всех городах есть ростовщик, в некоторых из них рядом с ростовщиком есть сундук без замка, так вот в этот сундук и надо класть все ваши денюжки, которые вы возьмёте у ростовщика. Брать и класть деньги у ростовщика можно до тех пор пока вам не хватит или не надоест. После просто отдайте ростовщику последние взятые у него деньги, забирайте свои из сундука и отправляйтесь их тратить.

На Кебрадосе Костилисе (но я могу ошибаться) на некого типа под именем Артуа Вуазье нападают и если вы его спасёте он предложит войти к вам в команду. Если вы его взяли хлопот не оберётесь, но после этих хлопот он вам скажет где зарыт клад в 50 тыс. пиастров много и честно. Но только для прокаченных персонажей!

Если в начале новой игры не брать подзорную трубу как предмет, то будете все видеть как через самую крутую (скорость, чем заряжены пушки).
Хотите много опыта? Выполните квест с Артуа и когда найдете клад, отправляйтесь в церковь Редмонда. Там говорите со свещеником и давайте ему по 4000 пиастров (как и просил вас Артуа), будете получать опыт + репутацию.

Если снимать комнату в таверне за 5 писсаров, то в сундуке можно найти вещь стоющую дороже и продать ее!

Если не можете выйти из захваченного форта или корабля, то нажмите клавишу действия.

Если хотите заработать деньги, то выберите способность "Внушающий доверие" или что-то в этом роде (где-то внизу), и идите в магазин, там откроются дополнительные товары по астрономическим ценам. Например, можно купить в Исла Муэль 1500 т. Черного дерева по ~20, а продать в Оксбеи уже за 69. С первым классом я за одно путешествие зарабатывал не менше 20000.

1. Если у вас тихий и непровототливый корабль (например Пинас), не нужно паниковать. Как только на вас нападут пираты, разворачивайтесь к ним кормой и обстреливайте книппелями, чтобы они ползли как черепахи. Смело уменьшайте свою скорость, заряжайте пушки бомбами и начинайте топить корабль (вражеский корабль ничего не сможет сделать своими носовыми орудиями, также наблюдайте, чтобы другие корабли не атаковали вас). Если вы потопите более сильного противника, то и опыта вам дадут больше.
2. Надоели пираты? Просто войдите в режим моря, как только их увидите. Когда вы снова вернетесь в режим карты пиратов на ней уже не будет.

Меч можно найти в катакомбах под Редмондом, четырёхствольный пистолет на затонувшем корабле.

Если накачатся кучей опыта, то потом можно купить корабль за 300 000 пиастров со 100 пушками и будете гроза океанов.

Легкие деньги.
Зайдите к ростовщику и попросите в долг денег, потом ищите в доме сундук, кладите туда все бабло и заново берите у ростовщика деньги, опять ложите в сундук. Так можна делать пока не надоест. Когда закончили берите деньги опять, отдавайте ему, и можете забирать все с сундука.

В катакомбах на Оксбэе можно найти меч "Язык дракона".

Если у вас плохая репутация, то зайдите в церковь и давайте падре на пожертвование - у вас будет повышаться репутация.

Двуствольный пистолет можно найти на Исла Муалье.
Выйдите из резиденции и поверните направо, бегите прямо, снова направо и прямо до двери, заходите в дом, поднимайтесь на второй этаж, подойдите к открытому шкафчику и берите пистолет.

В Исла Муэлье слева от губернаторского здания есть большой дом, в котором есть двуствольный пистолет.

Если выйти из Оксбея и пройти не много в глубь джунглей, то можно найти вход в пещеру (про неё можно услышать у жителей Оксбея), там будет много скелетов, но зато там можно найти, торчащий в деревянный столб меч "Фальчитон".

Много денег и опыта:
Для начала наймите офицеров... штуки три...
Затем выходите в море и ищите пиратские корабли (или корабли стран, с которыми вы воюете) и вступайте с ними в бой. Сразу берёте этот корабль на абордаж и приставляете к нему офицера... Если с этим кораблём ещё попутчики, то и с ними проделываем такуе же операцию.
Опыт мы получили, теперь надо получить деньги...
Приплываем на какой-нибудь остров, заходим на верфь и продаём все награбленые корабли. На эти деньги чиним свой корабль, нанимаем народ и у нас ещё останется...
После таких долгих операций, нам дадут репутацию "Гроза морей".

В церкви Редмонда, поговорив с Падрой, можно начать квест про сатанинский культ, в завершении которого можно захватить фрегат "Mefisto" красного цвета и шпагу "Шквал"

Если хочется много опыта, то нужно купить корабль 1 класса, поставить крутые пушки, зарядить их бомбами, а потом подплыть к дружественному форту и захватить его (первый выстрел придется сделать в ручную - от 1 лица). Дадут 25000 опыта и золота, некоторое количество товаров и починят корабль. Отношения потом можно восстановить у дипломатов.

В таверне Дувезена, нужно подойти к молодому человеку (с хорошей репутацией), выполнить (не очень сложное), и в конце получить неплохой меч.

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

В самом начале игры, купите подзорную трубу, заходите через ворота в Оксбей.
Идите прямо к дереву, стоящему напротив таверны, под ним можно найти 100 "рублей".

Если вы испытываете проблемы с захватом Форта в Гринфорте (в фазе штурма), вы можете сделать следующее:
1. Захватить на абордаж Man-o-War.
2. Снарядить его кулевринами 12 калибра (чтоб достреливали).
3. Загрузить полный трюм картечи и досок.
4. Обстреливать форт картечью до приемлимого количества пехоты внутри (мне таким образом удалось снизить численность гарнизона до 10 человек).
5. Бомбами добить форт.
Не нужно брать с собой корабли-спутники (они могут разрушить форт раньше времени).
Нужен навык "Быстрая починка". Желательно иметь навык "Профессионал в защите" и прокачанного по максимуму канонира.

Если хотите прокачаться (только торговлей) до очень высокого уровня, то вам нужно 4 мановара и начинайте совершать сделки с купцами на 100000-200000 пиастров. Таким образом за день можно прокачаться примерно до 50 уровня!

В маяке (на Ексбэе), если хорошо поискать то можно найти "Отличная подзорная труба" (Я уверен).

(Я могу ошибатся), но если получить очень много опыта, то в Верфи будут появлятся Monawrы.

Можно спокойно достать на халяву столько денег, сколько надо. Для этого надо всего лишь пойти к ростовщику, занять у него денег, а потом все наличные отдать одному из своих офицеров. Ростовщик НЕ БУДЕТ ПОМНИТЬ о том, что вы у него занимали, если денег у вас не будет. Можно так проделывать много раз, а долг вернуть только за последний!

Хотите заработать миллионы?
Это не так уж сложно, в некоторых тавернах мужик го

9-8+76-5+4+3+21 = 100

Найти все возможные варианты таких выражений.

Задача 8. Дан двумерный массив, заполненный нулями и единицами. Найти прямоугольник, наибольшей площади, заполненный единицами.

Площадь прямоугольников изменяется от максимальной (весь массив) до минимальной (прямоугольник, состоящий из одной 1). Каждый прямоугольник конкретной площади может быть построен множеством способов. Для площади S допустимый прямоугольник это такой, произведение сторон которого, равно S. Мы должны для каждого значения площади перебрать все допустимые способы построения прямоугольников. Каждый прямоугольник конкретной площади и формы может располагаться в массиве различным образом. Точнее сказать, его левая верхняя вершина может находиться в разных точках массива. Следовательно, для прямоугольника определённой площади и формы мы должны перебрать все возможные расположения.

Может показаться, что программа для большого массива будет работать слишком долго, но есть серьёзные возможности для её ускорения. А именно:

1. Если площадь перебирать от максимальной к минимальной, то первый найденный прямоугольник и будет искомым.

2. Прямоугольник конкретной площади и формы не поместится в любом положении в массив.

Учёт этих утверждений ведёт к очень серьёзному ускорению программы.

Задание 9. «Вирус» Колония клеток представляет собой квадратную матрицу порядка N (N < 500). В колонию проникает M (M < 11) вирусов, которые поражают клетки с координатами (X1, Y1), ... (Xm, Ym). За одну единицу времени вирус проникает в клетки, соседние с зараженными (соседними считаются клетки, имеющие общую сторону). Требуется написать программу, которая определит время заражения всей колонии. Графически показать процесс заражения.

Задание 10. «Сундук Билли Бонса» Билли Бонс положил в сундук некоторое количество золотых монет. На второй год он вынул из сундука сколько-то монет. Начиная с третьего года, он добавлял столько монет, сколько было в сундуке два года назад.

Требуется написать программу, определяющую количество монет в сундуке в первый и во второй года, если в X-м году там оказалось ровно Y монет. (3<=X<=20) и Y (1<=Y<=32767).

Пояснение: если в первый год положить 5 монет, а во второй год вынуть 3 монеты, то начиная с первого года в сундуке будет 5, 2, 7, 9, 16, 25, ... монет.


Приложение 1. Свойства элементов управления

Многие стандартные визуальные элементы управления имеют одинаковые свойства. Поэтому имеет смысл рассмотреть их отдельно.

Свойства Пояснения
Name Возвращает или задает имя элемента управления. Значение этого свойства используется в программе для обращения к объекту по его имени.
Size Возвращает или задает размер элемента управления. Это свойство позволяет одновременно установить высоту и ширину (в точках) вместо того, чтобы устанавливать по отдельности свойства Height и Width.
Height Возвращает или задает высоту элемента управления.
Width Возвращает или задает ширину элемента управления.
Location Возвращает или задает координаты левого верхнего угла элемента управления относительно левого верхнего угла контейнера.
Dock Используется для определения способа автоматического изменения размеров элемента управления при изменении размеров родительского элемента управления. Например, задание для свойства Dock значения DockStyle.Left приводит к выравниванию самого элемента управления по левому краю его родительского элемента управления и к изменению размеров при изменении размеров родительского элемента управления. Внимание: свойства Anchor и Dock являются взаимоисключающими. Одновременно может быть задано только одно из них, которое и получает преимущество.
Anchor Возвращает или задает границы контейнера, с которым связан элемент управления, и определяет способ изменения размеров элемента управления при изменении размеров его родительского элемента. Элемент управления можно привязать к одной или нескольким границам контейнера. Например, если имеется объект Form с объектом Button, для свойства Anchor которого заданы значения Top и Bottom, то объект Button растягивается, чтобы сохранить закрепленное расстояние до верхней и нижней границ объекта Form при увеличении значения свойства Height объекта Form. Внимание: Свойства Anchor и Dock являются взаимоисключающими. Одновременно может быть задано только одно из них, которое и получает преимущество.
Margin Возвращает или задает пустое пространство между элементами управления. Элементы управления получают для свойства Margin значения по умолчанию, которые достаточно близки к рекомендациям по пользовательскому интерфейсу Windows. Для конкретных приложений по-прежнему могут быть необходимы некоторые корректировки.
BackColor Возвращает или задает цвет фона для элемента управления. Свойство BackColor является внешним свойством.
ForeColor Получает или задает основной цвет элемента управления. Свойство ForeColor является внешним свойством.
Font Возвращает или задает шрифт текста, отображаемого элементом управления. Нельзя поменять отдельные элементы свойства Font – можно только создать новый объект Font с требуемыми параметрами и назначить его свойству Font. Свойство Font является внешним свойством. Внешнее свойство – это свойство элемента управления, которое (если оно не задано) получается из родительского элемента управления.
Text Получает или задает текст, сопоставленный с этим элементом управления. Свойство Text элемента управления по-разному используется каждым производным классом. Например, свойство Text объекта Form отображается в заголовке окна в верхней части формы, содержит небольшое количество символов и, как правило, отображает имя приложения или документа. Однако свойство Text объекта RichTextBox может быть большим и включать в себя многочисленные невидимые символы, применяемые для форматирования текста. Например, отображаемый в объекте RichTextBox текст можно отформатировать, настроив свойства Font либо добавив символы пробелов или табуляции для выравнивания текста.
TextAlign Получает или задает выравнивание текста для элемента управления.
Enabled Возвращает или задает значение, показывающее, сможет ли элемент управления отвечать на действия пользователя. Значение true, если элемент управления может отвечать на действия пользователя; в противном случае – значение false. Значением по умолчанию является true. С помощью свойства Enabled можно включать или отключать элементы управления во время выполнения. Например, можно отключить элементы управления, не применяемые при данном состоянии приложения. Можно также отключить элемент управления, чтобы ограничить его использование. Например, возможно отключить кнопку, чтобы пользователь не смог ее нажать. Если элемент управления отключен, его невозможно выделить.
Visible Получает или задает значение, указывающее, отображаются ли элемент управления и все его дочерние элементы управления. Значение true, если элемент управления и все его дочерние элементы управления отображаются; в противном случае – значение false. Значение по умолчанию – true. Обратите внимание, что даже если для Visible задано значение true, элемент управления может быть невидимым для пользователя, если он находится позади других элементов управления.
Items С помощью этого свойства можно получить ссылку на список элементов, хранящихся в настоящее время в элементе управления (например, ListBox). С помощью этой ссылки можно добавлять и удалять элементы, а также определять число элементов в коллекции.


Приложение 2. События элементов управления

Событие Пояснения
Load Происходит до первоначального отображения элемента управления (обычно формы).
Resize Происходит при изменении размеров элемента управления (например, формы).
Move Происходит при перемещении элемента управления.
Click Происходит при щелчке элемента управления. Событие Click передает объект EventArgs его обработчику событий, указывая только, что щелчок был выполнен. Если необходимы более точные сведения о мыши (кнопка, количество щелчков, вращение колесика или положение), следует использовать событие MouseClick. Однако событие MouseClick не возникает, если щелчок был выполнен не с помощью мыши, а например, при нажатии клавиши Enter .
DoubleClick Происходит, когда элемент управления дважды щелкается. Двойной щелчок определяется параметрами мыши в операционной системе пользователя. Пользователь может задать время между нажатиями кнопки мыши, которые будут считаться двойным щелчком, а не двумя отдельными щелчками. Событие Click вызывается каждый раз, когда элемент управления дважды щелкается. Например, при наличии обработчиков для событий Click и DoubleClick объекта Form события Click и DoubleClick вызываются, когда форма дважды щелкается и оба метода вызываются. Если элемент управления дважды щелкается и этот элемент управления не поддерживает событие DoubleClick, событие Click может быть вызвано дважды.
MouseClick Происходит при щелчке элемента управления мышью. Если нажать кнопку мыши, когда курсор находится на элементе управления, обычно возникает следующая последовательность событий, относящихся к этому элементу управления: · Событие MouseDown. · Событие Click. · Событие MouseClick. · Событие MouseUp.
MouseDoubleClick Генерируется при двойном щелчке элемента управления мышью. Событие MouseDoubleClick происходит, когда пользователь быстро дважды нажимает кнопку мыши, когда курсор находится на элементе управления. Интервал времени, позволяющий отличить два отдельных щелчка мыши от двойного щелчка, определяется параметрами мыши в операционной системе. При выполнении пользователем такого действия элемент управления вызывает следующую последовательность событий: · Событие MouseDown. · Событие Click. · Событие MouseClick. · Событие MouseUp. · Событие MouseDown. · Событие DoubleClick. · Событие MouseDoubleClick. · Событие MouseUp.
MouseDown Происходит при нажатии кнопки мыши, если указатель мыши находится на элементе управления.
MouseUp Происходит при отпускании кнопки мыши, когда указатель мыши находится на элементе управления.
MouseMove Происходит при перемещении указателя мыши по элементу управления. Обычно использование события MouseMove приводит к изменению цвета элемента управления или к прорисовке приподнятого прямоугольника вокруг элемента управления.
MouseLeave Происходит, когда указатель мыши покидает элемент управления.
KeyPress Происходит при нажатии клавиши, если элемент управления имеет фокус. Событие KeyPress вызывается только нажатием клавиш с символами. Остальные клавиши вызывают события KeyDown и KeyUp. Свойство KeyChar используется для выбора образцов нажатий клавиш во время выполнения и для использования или изменения подмножества стандартных нажатий клавиш. Чтобы обрабатывать события клавиатуры только на уровне формы без предоставления другим элементам управления возможности получать события клавиатуры, необходимо задать для свойства KeyPressEventArgs.Handled в методе обработки события KeyPress формы значение true. События нажатия клавиши происходят в следующем порядке. 1. KeyDown 2. KeyPress 3. KeyUp
KeyDown Происходит при нажатии клавиши, если элемент управления имеет фокус. Чтобы обрабатывать события клавиатуры только на уровне формы без предоставления другим элементам управления возможности получать события клавиатуры, необходимо задать для свойства KeyPressEventArgs.Handled в методе обработки события KeyPress формы значение true. Некоторые клавиши, такие как Tab , Enter , Escape и клавиши со стрелками, автоматически обрабатываются элементами управления.
KeyUp Происходит, когда отпускается клавиша, если элемент управления имеет фокус.
Enter Происходит при входе в элемент управления (при получении фокуса). Когда выполняется изменение фокуса с помощью клавиатуры (Tab , Shift+Tab и т. д.), события фокуса происходят в следующем порядке: 1. Enter 2. GotFocus 3. Leave 4. Validating 5. Validated 6. LostFocus При изменении фокуса с помощью мыши или посредством вызова метода Focus события фокуса возникают в следующем порядке. 1. Enter 2. GotFocus 3. LostFocus 4. Leave 5. Validating 6. Validated События Enter и Leave подавляются классом Form. В классе Form им эквивалентны события Activated и Deactivate. Не пытайтесь задать фокус из обработчиков событий Enter, GotFocus, Leave, LostFocus, Validating или Validated. Это может привести к тому, что приложение перестанут отвечать.
Leave Происходит, когда фокус ввода покидает элемент управления. События Enter и Leave подавляются классом Form. В классе Form им эквивалентны события Activated и Deactivate.
TextChanged Происходит при изменении значения свойства Text. Данное событие возникает в том случае, если свойство Text изменено программой или в результате действий пользователя.
Paint Происходит при перерисовке элемента управления.

Приложение 3. Методы для работы со строками

Метод или свойство Пояснения
Compare() Сравнивает две строки и возвращает целое число, которое показывает их относительное положение в порядке сортировки. Возвращаемое число будет равно нулю, если значения параметров равны.
Concat() Соединяет в одну строку две и более строки. При этом разделители не добавляются.
Copy() CopyTo() Методы Copy и CopyTo служат для копирования строки или подстроки в другую строку или в массив типа Char.
Format() Форматирует строку, используя строго заданный формат. Для этого заменяет каждый элемент формата в указанной строке текстовым эквивалентом значения соответствующего объекта.
Join() Конкатенация (соединение) массива строк в единую строку. При конкатенации между элементами массива вставляются разделители. Операция, заданная методом Join, является обратной к операции, заданной методом Split.
Length Свойство, которое возвращает количество символов в строке.
EndsWith() Проверяет, заканчивается ли строка определённой последовательностью символов.
Insert() Вставляет новую строку в уже существующую.
LastIndexOf() Возвращает индекс последнего вхождения элемента в строку.
PadLeft() Выравнивает строку по правому краю, пропуская все пробелы или другие специально заданные символы.
PadRight() Выравнивает строку по левому краю, пропуская все пробелы или другие специально заданные символы.
Remove() Удаляет заданное число символов из строки.
Replace() Заменяет подстроку в заданной позиции на новую подстроку.
Split() Возвращает подстроку, отделённую от основного массива определённым символом. На вход методу Split передается один или несколько символов, интерпретируемых как разделители. Объект string, вызвавший метод, разделяется на подстроки, ограниченные этими разделителями. Из этих подстрок создается массив, возвращаемый в качестве результата метода. Другая реализация позволяет ограничить число элементов возвращаемого массива.
StartsWith() Определяет, начинается ли строка с определённой последовательности символов.
Substring() Извлекает подстроку из строки.
ToCharArray() Копирует символы из строки в массив символов.
ToLower() Преобразует символы в строке к нижнему регистру.
ToUpper() Преобразует символы в строке к верхнему регистру.
Trim() Удаляет все вхождения определённых символов в начале и в конце строки.
TrimEnd() Удаляет все вхождения определённых символов в конце строки.
TrimStart() Удаляет все вхождения определённых символов в начале строки.

Приложение 4. Методы для работы с массивами

Метод или свойство Пояснения
Concat() Объединяет две последовательности.
Contains() Определяет, содержится ли указанный элемент в массиве.
CopyTo() Копирует все элементы текущего массива в заданный массив.
GetLength() Получает 32-разрядное целое число, представляющее количество элементов в заданном измерении массива. Примером метода GetLength может служить метод GetLength(0), который возвращает число элементов в первом измерении массива (например, количество строк в двухмерном массиве).
Intersect() Находит пересечение множеств, представленных двумя массивами.
Length Свойство, которое возвращает целое число, представляющее общее число элементов во всех измерениях массива.
Max() Возвращает максимальное значение, содержащееся в массиве.
Min() Возвращает минимальное значение, содержащееся в массиве.
Reverse() Изменяет порядок элементов массива на противоположный.
Sum() Вычисляет сумму последовательности числовых значений.

Литература

1. Есипов А.С., Паньгина Н.Н., Громада М.И. Информатика. Сборник задач и решений для общеобразовательных учебных заведений. СПб.: Наука и техника, 2001. 368 с.

2. Окулов С.М. Программирование в алгоритмах. М.: Бином. Лаборатория знаний, 2004. 341 с.

3. Юркин А.Г. Задачник по программированию. СПб.: Питер, 2002. 192 с.

4. Эндрю Троелсен. Язык программирования C# 5.0 и платформа.NET 4.5. М.: Вильямс. 2013 г. 1312 с.

5. Албахари, Дж. С# 3.0. Справочник: Пер. с англ./ Дж. Албахари, Б. Албахари. ­– 3-е изд. – Спб.: БХВ-Петербург, 2009. – 944 с.: ил.

6. Биллиг В. Основы программирования на C# // Интуит . Дата обновления: 22.11.2005. URL: http://www.intuit.ru/studies/courses/2247/18/info (дата обращения: 27.06.2013).

7. Павлоская Т. Программирование на языке высокого уровня C# // Интуит . Дата обновления: 15.09.2010. URL: http://www.intuit.ru/studies/courses/2247/18/info (дата обращения: 27.06.2013).

8. Вихтенко Э. М. Геометрические задачи в олимпиадах по программированию. Изд-во МИФ-2 №2. 2005 г.

9. Липский В. Комбинаторика для программистов. – М.: Мир, 1988. –200 с.


Учебное издание

ДЕМИН Антон Юрьевич

ДОРОФЕЕВ Вадим Анатольевич

ПРОГРАММИРОВАНИЕ НА С#

Учебное пособие

Рецензенты

Доктор технических наук,

доцент кафедры «Комплексной информационной безопасности электронно-вычислительных систем», ТУСУР

Р.В. Мещеряков

Кандидат технических наук, доцент каф. «Программирова-ния», ФПМК, ТГУ

О.И. Голубева

Компьютерная вёрстка И.О. Фамилия

Дизайн обложки И.О. Фамилия

На затонувшем корабле были найдены шесть сундуков с золотыми слитками. Оказалось, что пираты складывали слитки золота по некоторому принципу: в первый сундук они положили 60 слитков, во второй - 30, в третий - 15. Сколько слитков пираты положили в пятый и шестой сундуки?

Ответы:

в пятый сундук пираты положили 4 слитков. в шестой-2. в четвёртый-8

они каждый сундук делили на 2. 60:2=30 30:2=15 просто подели остальное так же

Похожие вопросы

  • Выразить в минутах: 1) 6 градусов и 15 минут 2) 2 градуса 3) 11,5 градусов
  • решите неравенство 25-x^2/(x-4)^2>или=0
  • о чем повесть барышня крестьянка
  • найдите процентное отношение 3,6к6
  • Площадь земель крестьянского хозяйства отведенная под посадку с/х культур состовляет 24 га распределена на зерновые и овощные как 5:3 Найти:сколько гектар занимает овощные?? (Полное решение)
  • 1. … the University there is a monument to Lo-monosov. 2. He sat … me. 3. The border … Europe and Asia lies along the Ural Mountains. 4. There is a new bridge … the river. 5. There are no books … the shelf. 6. There was a large garden … the house. 7. She is … the Institute now. 8. Look! There is a bench … this tree. a) between b) on c) under d) near e) across f) in front of g) behind h) at
  • Выбрав правильный вариант, определите род имен существительных: болезненный заусенец – болезненная заусеница


 
Статьи по теме:
Где найти мастера рун Witcher 3 руны
Побочные задания в дополнении «Каменные сердца» не так многочисленны, точнее, их совсем мало. Оно и понятно, водоворот событий при прохождении основного сюжета затягивает с головой, и отвлекаться от увлекательнейшего повествования совершенно не хочется. О
Прохождение castlevania lords of shadow 2
Прохождение Castlevania Lords of Shadow 2 Сначала обучение. Надо будет встать с трона и пройти в зал, где нажать все кнопки, находящиеся на дисплее слева. После появления солдат, продолжаем выполнять указания, просто бить их нет смысла. Есть некоторая пр
Всё, что вам нужно знать об SD-картах памяти, чтобы не облажаться при покупке Подключаем sd
(4 оценок) Если на вашем устройстве недостаточный объем внутренней памяти, можно использовать SD-карту как внутреннее хранилище для вашего телефона Android. Данная функция, называемая Adoptable Storage, позволяет ОС Андроид форматировать внешний носител
Как повернуть колёса в GTA Online и многое другое в FAQ по GTA Online
Почему не подключается gta online?Всё просто, сервер времено выключен/неактивен или не работает. Зайди на другой.Как отключить онлайн игры в браузере. Как отключить запуск приложения Online Update Clinet в Connect manager? ... На сккоко я знаю когда ты ум